Я пытаюсь добавить многопользовательскую форму в игру простого понга, но когда я пытаюсь запустить 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