当我使用本地主机上的客户端和服务器测试它的作品时。但是随后我将客户端和服务器拆分为具有不同IP地址的不同机器,现在客户端没有收到数据包。任何人都可以发现这个问题与我的代码:Java - 通过UDP连接将消息从一台PC发送到另一台PC
客户:
class Csimudp {
public static DatagramSocket ds;
public static byte buffer[] = new byte[1024];
public static void Myclient() throws Exception {
while (true) {
DatagramPacket p = new DatagramPacket(buffer, buffer.length);
ds.receive(p);
System.out.println(new String(p.getData(), 0, p.getLength()));
}
}
public static void main(String args[]) throws Exception {
System.out.println("for quitting client press ctrl+c");
ds = new DatagramSocket(777);
Myclient();
}
}
服务器:
class Ssimudp {
public static DatagramSocket ds;
public static byte buffer[] = new byte[1024];
public static void MyServer() throws Exception {
int pos = 0;
while (true) {
int c = System.in.read();
switch (c) {
case '~':
System.out.println("\n Quits");
return;
case '\r':
break;
case '\n':
ds.send(new DatagramPacket(buffer, pos, InetAddress
.getByName("117.201.5.150"), 777));
pos = 0;
break;
default:
buffer[pos++] = (byte) c;
}
}
}
public static void main(String args[]) throws Exception {
System.out.println("server ready....\n please type here");
ds = new DatagramSocket(888);
MyServer();
}
}
代码对我来说很好,您可以从服务器计算机ping到117.201.5.150吗? – roni 2012-03-03 19:19:11
服务器和客户端是否位于同一网络上?如果他们不是,他们在NAT设备后面吗?问题可能不在于您的代码,而是与网络的配置方式有关。 – smessing 2012-03-03 19:21:18
奇数,这是一个公共IP地址。防火墙规则可能会阻止您的UDP通信,您可能需要使用数据包嗅探器进行验证,或与您的服务器管理员联系。 – Perception 2012-03-03 19:22:45