У меня есть DatagramSocket, где я получаю в цикле, и в итоге он просто прекращает прием пакетов. Я отправляю серверу приветственное сообщение, которое устанавливает соединение. Затем я начинаю возвращать пакеты, как ожидалось. В конце концов он просто перестает получать.Java UDP DatagramSocket перестает принимать
Отправляющий сервер подтвердил, что они по-прежнему отправляют пакеты на один и тот же адрес с помощью tcp-дампа, но в конечном итоге этот код зависает при приеме вызова.
Есть ли что-нибудь, что приведет к прекращению приема сокета?
String hello = "hello";
InetAddress IPAddress = InetAddress.getByName("serveraddress");
DatagramPacket outboundPacket = new DatagramPacket(hello.getBytes(),hello.getBytes().length, IPAddress, 54321);
DatagramSocket registerSocket = new DatagramSocket(61646);
registerSocket.send(outboundPacket);
int count = 0;
while(!done){
count++;
byte[] inboundData = new byte[1368];
DatagramPacket inboundPacket = new DatagramPacket(inboundData,inboundData.length);
System.out.println(registerSocket.getPort());
System.out.println(registerSocket.getLocalPort());
//Eventually locks up here after hundreds of successful receives
registerSocket.receive(inboundPacket);
byte[] data = inboundPacket.getData();
String test = new String(data, "ISO-8859-1");
System.out.println(test+"---"+count);
}
registerSocket.close();
Вы уверены, что это не сбой – redFIVE
Определенный. Процесс продолжает работать, никаких исключений не было, и он наверняка останавливается на registerSocket.receive (inboundPacket); –
Вы за NAT? Если это так, вероятно, это связано с отсутствием исходящей активности. –