我正在嘗試將多人表單添加到簡單的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