Interromper receive

1 resposta
G

pessoal,

é possível montar um programa em java que interrompa um receive de um DatagramSocket? Possuo uma thread que faz um receive de um DatagramSocket e gostaria de montar outra thread que finalizasse a primeira.

1 Resposta

T

Chame DatagramSocket.setSoTimeout após abrir o socket e antes de efetuar um receive. Se demorar muito para receber um pacote, será lançada uma SocketTimeoutException. Basicamente você faria algo como:

Abrir o socket;
Setar o timeout desejado;
cancelar = false;
while (!cancelar) {
    try {
        socket.receive;
        break;
    } catch (SocketTimeoutException ex) {
        // não recebeu os dados, tentar novamente
    }
}
Criado 15 de junho de 2009
Ultima resposta 15 de jun. de 2009
Respostas 1
Participantes 2