2011-12-08 71 views
0

我目前使用Reliable UDP协议的Java实现,发现[here] [1]。该项目绝对没有教程,所以我发现很难发现问题。Java异常 - 套接字已关闭,可靠的udp帮助?

我已经建立了客户端和服务器。服务器在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(); 
     } 
    } 

它有一些待办事项与输入流。我不知道什么是错误的,但是从阅读其他线索来看,它可能是有多个输入流的。我迷失了,请帮助。

+0

是不是客户端和服务器应该连接到同一个套接字?例如服务器连接到本地主机:1234和客户端到本地主机:1234? – glindste

+0

它在本地机器上如此 – liamzebedee

+0

我不明白问题的所有细节,但最近我在其他情况下有相同的例外。在我的情况下套接字被连接超时关闭,我通过增加服务器的连接超时参数来解决问题 – shurik2533

回答

0

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