creo un DatagramSocket
en el hilo principal, y luego creo un hilo de clase interno para escuchar el puerto. cuando cierro el DatagramSocket
en el hilo principal, siempre me encontré con un error socket closed
porque en el hilo de la clase interna llamé al método , y bloqueó el hilo de la clase interna. aquí está el código de la clase interna:cómo puedo detener el método de bloque DatagramSocket.receive() en un hilo
class ReceiveText extends Thread
{
@Override
public void run()
{
while(true)
{
byte[] buffer = new byte[1024];
DatagramPacket dp = new DatagramPacket(buffer, buffer.length);
try {
udpSocket.receive(dp);//blocked here
byte[] data = dp.getData();
String message = new String(data, 0 , dp.getLength());
setTxtAreaShowMessage(message);
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
quiero detener el hilo de clase interna antes del cierre del DatagramSocket, pero no se recomienda el método stop()
. ¿Cómo puedo hacer eso?
que es una solución, gracias – cloud
También puedo confirmar esto funciona! Una buena manera de salir de un hilo de trabajo que está en un bucle de recepción en un socket de datagrama. – Nerdtron