我尝试通过Java DatagramSocket向两个不同的客户端发送消息。
这是我的发送功能:
public void sendData(String msg, UserData data) {
byte[] bA;
bA = msg.getBytes();
DatagramPacket pck;
try {
pck = new DatagramPacket(bA, bA.length, InetAddress.getByName(data.getConnectionInfo().getString("privateAddress")), data.getConnectionInfo().getInt("privatePort"));
ds.send(pck);
} catch (Exception e) {
e.printStackTrace();
}
}
所以我连续两次使用不同的主机和端口调用此函数。 但只有一个客户端收到消息。当我在这个函数的两个调用之间插入一个Thread.sleep(1000)一切正常。那么为什么不能在不等待的情况下连续向两个客户端发送两条消息呢?
感谢您的帮助。
编辑: 对不起,
ds是DatagramSocket。它是全球性的,并在一开始就创建。 地址和端口是正确的,否则它也不适用于Thread.sleep里面。
DatagramSocket ds = new DatagramSocket(6312);