我目前正在使用可靠UDP协议的Java实现,找到[这里] [1]。该项目绝对没有教程,所以我发现很难找出问题。
我已经设置了客户端和服务器。服务器在localhost:1234上运行,客户端在localhost:1235上运行。首先建立服务器,并循环侦听连接。
然后我将其设置为向服务器发送数据包。发送数据包时,服务器调用handlePacket() -
DataInputStream i = new DataInputStream(client.getSocket().getInputStream());
short packetID = i.readShort();
i = null;
switch(packetID){
case 3:
Packeta packeta = new Packeta(client);
break;
}
} catch (IOException e) {
e.printStackTrace();
}
我目前正在使用名为Packeta的小型虚拟类进行调试。调用构造函数时,它会从流中读取日志并将其读取到控制台。但是,总是在构造时,它会在产生错误之前挂起10秒钟 -
java.net.SocketException:Socket已关闭....
在 lessur.engine.net.packets.Packeta。(Packeta.java:15)
Packeta的构造函数 -
public Packeta(LessurConnectedNode c) {
super((short)3, c);
try {
/*LINE 15*/ Logger.getLogger("adsfas").info("X was "+c.getSocket().getInputStream().read());
} catch (IOException e) {
e.printStackTrace();
}
}
输入流有一些东西。我不知道出了什么问题,但是通过阅读其他线程,可能有多个输入流。我迷失了,请帮忙。
答案 0 :(得分:0)
问题是,在套接字完全初始化之前,我将服务器传递给套接字侦听器。修复!