gpt4 book ai didi

Java UDP DatagramSocket 停止接收

转载 作者:行者123 更新时间:2023-12-02 04:05:32 26 4
gpt4 key购买 nike

我有一个 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();

最佳答案

如果您位于 NAT 之后,如果长时间没有出站流量,映射将会超时。确保每隔几分钟发送一次出站数据报,以使映射在路由器中保持 Activity 状态。

关于Java UDP DatagramSocket 停止接收,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34322499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com