Qual é a melhor maneira de monitorar um soquete para novos dados e processá-los?

Perdoe meu status de novato em C # .Net. Se isso for óbvio e eu perdi os documentos, um link para a página relevante ou o código de exemplo seria apreciado.

Estou trabalhando em um aplicativo que aceitará uma conexão de soquete TCP de um aplicativo Java. (Sim, Java é necessário nessa parte. É um dispositivo Sun SPOT e Java é a única opção.) O aplicativo Java grava periodicamente novos dados no soquete, e a tarefa do meu aplicativo é receber o byte [], converter para uma sequência de caracteres, processe os dados (atualização da interface do usuário etc.) e, possivelmente, encaminhe os dados para outro computador executando um aplicativo C # .NET semelhante.

Aqui está o que eu fiz até agora: No momento, o aplicativo lança um thread no lançamento que abre um soquete. O aplicativo Java pode se conectar com êxito ao soquete para que funcione. Eu estava olhando para o NetworkStreambeginRead método e odataAvailable, lengtheCanRead propriedades, mas não tenho certeza de como saber quando li um pacote de dados, geralmente cerca de 512 bytes, mas pode variar.

Se o aplicativo Java gravar dados no fluxo ou houver um acúmulo de dados (o aplicativo Java passará os dados rapidamente). Como posso ter certeza de que estou lendo apenas um pacote de dados por vez? Se o aplicativo Java nulo encerrar os dados durante a gravação, isso ajudará? É o suficiente?

Por fim, o soquete receberá apenas uma conexão, mas preciso mantê-lo aberto até que ocorra um erro ou a conexão seja encerrada. Qual é a maneira mais elegante de lidar com esse aspecto? Eu não acho que fechar e reabrir com cada pacote de dados funcionará devido ao aspecto de disparo rápido (quase em tempo real) do aplicativo Java que está sendo executado na estação base Sun SPOT. No momento, quando a estação base termina, meu aplicativo sofre uma morte alta e dolorosa. :)

Obrigado pela leitura e por qualquer ajuda que você possa oferecer.

questionAnswers(3)

yourAnswerToTheQuestion