在发送任何内容之前是否需要等待连接我的UDP套接字?

时间:2017-06-16 05:03:10

标签: java sockets udp datagram

我写了一个类,它将一些消息发送到UDP套接字。我注意到在我第一次尝试使用套接字时,它会超时。当我去做wireshark捕获时,我一直看到第一个数据包没有从我的机器发送,这导致超时,因为服务器在发送状态之前需要有两条消息。这是我的代码。

DatagramSocket socketN = null;
try {
    socketN = new DatagramSocket();
    DatagramPacket connect = new DatagramPacket(connectMsg, connectMsg.length, ipAddr, port);
    socketN.send(connect);
    socketN.setSoTimeout(5000);
    DatagramPacket start = new DatagramPacket(startMsg, startMsg.length, ipAddr, port);
    DatagramPacket status = new DatagramPacket(status, status.length);
    socketN.send(start);
    socketN.receive(status);
} catch (InterruptedException | IOException e) {
    e.printStackTrace();
} finally {
    socketN.close();
}

基于代码和我的wireshark捕获,我可以看到消息开始从我的PC发送而不是消息连接。这段代码重复了很多次,所以在其他时候会重复,不会发生超时。

0 个答案:

没有答案