好的,因此该程序旨在接收连接,验证它们,然后重新发送该验证代码。在任何人生气之前,这只是一个简单的小项目,并没有设计得过于复杂哈哈。但是由于一些非常奇怪的原因,该函数挂在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() 有效,但花费的时间太长了......