【发布时间】:2015-09-22 22:44:29
【问题描述】:
当我使用 Udp DatagramSocket 和 DatagramPacket 类时,我无法得到响应。我用 Tcp Socket 测试了同一台服务器,它响应正确。
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(0); // random available port
System.out.println("port: " + socket.getLocalPort());
socket.setSoTimeout(3000); // 3 seconds timeout
DatagramPacket request = new DatagramPacket(new byte[1], 1, InetAddress.getByName("time.nist.gov"),
13);
DatagramPacket response=new DatagramPacket(new byte[1024],1024);
socket.send(request);
socket.receive(response);
String daytime = new String(response.getData(), 0, response.getLength(),
"US-ASCII");
System.out.println(daytime);
}
【问题讨论】:
-
UDP 不可靠。数据包可能会丢失。你确定对方收到你的请求了吗?防火墙可能是个问题。此外,您必须使用另一个端口。 123 我相信是针对 UDP 的。