我正在尝试将多人表单添加到简单的pong游戏中,但是当我尝试启动DatagramPacket
并尝试读取IP和端口时,它说ip是null
,端口是-1
。有谁知道为什么会这样做?我想也许是因为套接字还没有收到数据包,但是当我看到我看到socket.recieve(packet)
之后的所有代码都没有运行。DatagramPacket中没有地址
代码,我启动服务器:
public GameServer(PongEngine engine) {
this.engine = engine;
try {
this.socket = new DatagramSocket(4269);
} catch (SocketException e) {
e.printStackTrace();
}
}
public void run() {
while(true) {
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
System.out.println(packet.getAddress() + ":" + packet.getPort());
try {
socket.receive(packet);
} catch (IOException e) {
e.printStackTrace();
}
String message = new String(packet.getData());
if(message.trim().equalsIgnoreCase("ping")) {
System.out.println("CLIENT[" + packet.getAddress() + ":" + packet.getPort() + "] > " + message);
sendData("pong".getBytes(), packet.getAddress(), packet.getPort());
}
}
}
你的第一个想法是正确的。直到接收函数被调用之后,才会填充IP和端口值。如果该点之后的代码没有执行,则抛出异常,或者根本没有客户端连接。接收将阻塞,直到它获得一个数据包。 – ccarton
据我所知,我正在正确运行客户端和服务器。这是我的客户:http://pastebin.com/2zMdgNVP。你有没有看到任何问题? – TheGamerPlayz