私は単純なポンゲームにマルチプレイヤーフォームを追加しようとしていますが、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