プログラムは、接続を取り込んで検証し、その検証コードを再送信するように設計されています。誰かが怒る前に、それは単なる小さなプロジェクトであり、過度に複雑になるようには設計されていません。ただし、いくつかの非常に奇妙な理由で、関数はsend.setAddess(packet.getAddress);でハングしています。これを知っているのは、データグラムパケットの「送信」を処理するコードの個々の行をコメントアウトし、その特定の行で「ハング」する(またはメソッドを二度と進まない)ことを発見したためです。何かご意見は?私は無知に間違ったことをしていますか?私はそれが私とは何の関係もないことを確認するためにLinuxサーバーでもそれを試しました、そして同じがらくたが起こりました。
public static boolean authorize(String n, DatagramPacket packet) {
DatagramPacket send = new DatagramPacket(new byte[4096], 4096);
try {
System.out.println("in auth");
String[] t1 = n.split("%@");
String name = t1[1];
int k = genKey(name);
clients.put(name, k);
send.setAddress(packet.getAddress());
System.out.println("set add");
send.setPort(packet.getPort());
System.out.println("set port");
send.setData(("l-succeed%@" + Integer.toString(k)).getBytes());
System.out.println("set data");
main.dispathcer(send);
System.out.println("called send");
return true;
} catch(Exception e) {
send.setData("l-failed".getBytes());
main.dispathcer(send);
return false;
}
}
編集:認証トークンがクライアントによって受信されるまでに6分かかりました。したがって、明らかにsetAddress()は機能しますが、時間がかかりすぎます...