Java Exception - Socket是关闭的,可靠的udp帮助?

时间:2011-12-08 10:08:49

标签: java sockets exception udp inputstream

我目前正在使用可靠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();
        }
    }

输入流有一些东西。我不知道出了什么问题,但是通过阅读其他线程,可能有多个输入流。我迷失了,请帮忙。

1 个答案:

答案 0 :(得分:0)

问题是,在套接字完全初始化之前,我将服务器传递给套接字侦听器。修复!