Olá,
estou enfrentando um problema q não sei mais oq fazer.
tenho uma comunicação via DatagramSocket que roda em uma classe que implementa a Interface runnable, quando a comunicação terminar quero fechar o socket parar a thread e dar um dispose no Jframe.
na teoria faço mas quando o Jframe eh aberto recebo a linda mensagem do socket java.net.BindException: Address already in use: Cannot bind.
ja tentei usando variavel local, global chamar o close em um metodo stop junto com um boolean para para o loop e nenhum sucesso.
alguma ajuda?
Grato.
public void stop() {
try {
turnoff = false;
thread.interrupt();
} catch (Exception e) {
System.err.println("erro serverRX stop :" + e);
}
}
@Override
public void run() {
while (turnoff) {
try {
DatagramSocket socket = new DatagramSocket(PORTGAME);
byte[] dados = new byte[MESSAGESHORT];
DatagramPacket datagram = new DatagramPacket(dados, dados.length);
socket.receive(datagram);
byte[] recebido = datagram.getData();
String message = new String(recebido);
message = message.trim();
if (message.startsWith(UPDATEME)) {
...
}
socket.close();
Thread.sleep(50);
} catch (IOException | NumberFormatException e) {
System.err.println("erro serverRX while :" + e);
} catch (InterruptedException ex) {
Logger.getLogger(ServerRX.class.getName()).log(Level.SEVERE, null, ex);
}
}
}