Soquete lê e escreve simultaneamente [fechado]

9

Eu estou tentando escrever um programa de soquete muito simples, o que eu basicamente quero é que o cliente continue ouvindo a comunicação do servidor, em um loop while (true). agora eu também quero que o cliente possa enviar alguns dados de volta para o servidor no meio da escuta.

A única solução que consigo pensar é criar um thread para ler e escrever, e interromper o thread de leitura toda vez que eu tiver que escrever.

existe uma solução melhor ou é a única maneira de fazer isso

    
por yahh 09.10.2012 в 22:19
fonte

3 respostas

6

Você pode usar dois segmentos. Um para leitura e outro para escrever. Desta forma, o segmento de gravação pode escrever sempre que agrada (não precisa parar a leitura).

Outra maneira de fazer isso é usar setSoTimeout(timeoutMs) no soquete antes de chamar a leitura. Isso fará com que ele lance SocketTimeoutException se demorar mais do que o tempo limite de milissegundos para ler, permitindo que você escreva como quiser.

    
por CrazyCasta 09.10.2012 / 22:22
fonte
0

Veja as especificações do protocolo FTP. Ele faz o que você pretende fazer usando dois soquetes / canais, um para comandos e outro para dados.

    
por ali köksal 09.10.2012 / 22:30
fonte
-1

Você pode usar duas portas diferentes, uma para ouvir e outra para escrever. e use threads diferentes para fazer as operações, então você while (true) loop não criará um problema.

    
por Rajesh Pantula 09.10.2012 / 22:30
fonte