Ich versuche, ein Multiplayer-Formular zu einem einfachen Pong-Spiel hinzuzufügen, aber wenn ich versuche, DatagramPacket
zu starten und versuchen, die IP-Adresse und Port zu lesen, heißt die IP null
und der Port ist -1
. Weiß jemand, warum es das tun würde? Ich dachte, vielleicht lag es daran, dass die Steckdose das Paket noch nicht erhalten hatte, aber als ich es sah, sah ich, dass der gesamte Code nach socket.recieve(packet)
nicht lief.Keine Adresse in DatagramPacket
-Code, wo ich den Server zu starten:
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());
}
}
}
Ihr erster Gedanke war richtig. Die IP- und Port-Werte werden erst nach dem Aufruf der Empfangsfunktion aufgefüllt. Wenn der Code nach diesem Punkt nicht ausgeführt wird, wird entweder eine Ausnahme ausgelöst oder es wird einfach keine Verbindung hergestellt. Der Empfänger wird blockieren, bis er ein Paket erhält. – ccarton
Ich führe den Client und den Server korrekt aus, soweit ich weiß. Hier ist mein Klient: http://pastebin.com/2zMdgNVP. Siehst du irgendwelche Probleme? – TheGamerPlayz