Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java异常-套接字已关闭,可靠的udp帮助?_Java_Sockets_Exception_Udp_Inputstream - Fatal编程技术网

Java异常-套接字已关闭,可靠的udp帮助?

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(

我目前正在使用可靠UDP协议的Java实现,可在[here][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:套接字已关闭。。。。 在 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?我不理解这个问题的所有细节,但最近我在其他情况下遇到了相同的异常。在我的例子中,套接字是通过连接超时关闭的,我通过增加服务器的连接超时参数来解决这个问题