я создаю DatagramSocket
в основном потоке, а затем создаю поток внутреннего класса для прослушивания порта. когда я закрываю DatagramSocket
в основном потоке, всегда возникает ошибка socket closed
, потому что в потоке внутреннего класса я вызываю метод receive()
, и он блокирует поток внутреннего класса. Вот код внутреннего класса:
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();
}
}
}
}
Я хочу остановить поток внутреннего класса перед закрытием DatagramSocket, но метод stop()
не рекомендуется. как это сделать?