Java异常-套接字已关闭,可靠的udp帮助?
我目前正在使用可靠UDP协议的Java实现,可在[here][1]找到。该项目绝对没有教程,所以我发现很难确定问题 我已经设置了客户端和服务器。服务器在localhost:1234上运行,客户端在localhost:1235上运行。首先建立服务器,并循环侦听连接 然后我将其设置为向服务器发送数据包。发送数据包时,服务器调用handlePacket-Java异常-套接字已关闭,可靠的udp帮助?,java,sockets,exception,udp,inputstream,Java,Sockets,Exception,Udp,Inputstream,我目前正在使用可靠UDP协议的Java实现,可在[here][1]找到。该项目绝对没有教程,所以我发现很难确定问题 我已经设置了客户端和服务器。服务器在localhost:1234上运行,客户端在localhost:1235上运行。首先建立服务器,并循环侦听连接 然后我将其设置为向服务器发送数据包。发送数据包时,服务器调用handlePacket- DataInputStream i = new DataInputStream(client.getSocket().getInputStream(
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:套接字已关闭。。。。
在
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();
}
}
它与输入流有一些关系。我不知道是什么问题,但从阅读其他线程来看,可能需要多个inputstreams。我对此一无所知,请帮助。问题是,在套接字完全初始化之前,我正在将服务器传递给套接字侦听器。修正 客户端和服务器不应该连接到同一个套接字吗?例如,服务器连接到localhost:1234,客户端连接到localhost:1234?我不理解这个问题的所有细节,但最近我在其他情况下遇到了相同的异常。在我的例子中,套接字是通过连接超时关闭的,我通过增加服务器的连接超时参数来解决这个问题