2012-11-06 172 views
0

我扩展了Socket类并运行了一些我不明白的错误,所以我寻求你的帮助。下面是一个简短的片段 - 没什么。如果我插入了错误的主机地址,它第一次给出错误信息operation time out。但是,当我尝试使用有效地址的后续时间,错误说socket closed。我没有明确关闭套接字,并且println说socket closed is false。任何想法为什么套接字关闭?java套接字SocketException套接字关闭

java.net.SocketException: Socket closed 
    at java.net.PlainSocketImpl.socketConnect(Native Method) 
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:432) 
    at java.net.Socket.connect(Socket.java:529) 
    at edu.astar.i2r.ppdf.exchange.p2p.PeerClient.connect(PeerClient.java:251) 
    at edu.astar.i2r.ppdf.exchange.p2p.PeerClient.connectToServer(PeerClient.java:89) 
    at edu.astar.i2r.ppdf.demo.ui.client.peertopeer.P2PParamsPage$1.actionPerformed(P2PParamsPage.java:87) 
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2028) 
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2351) 
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) 
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) 
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) 



@Override 
    public void connect(SocketAddress endPoint) throws IOException{ 
     System.out.println("socket closed is " + this.isClosed()); 
     super.connect(endPoint); 
     logger.info("Connected to server..."); 

     this.ostream = new ObjectOutputStream(this.getOutputStream()); 
     this.istream = new ObjectInputStream(this.getInputStream()); 

回答

0

这个异常意味着你的应用程序已经关闭了套接字,现在正试图继续使用它。

0

在整个程序的某个地方有一个机会,你可以调用close()到套接字本身或ObjectOutputStream或ObjectInputStream或程序中使用的任何其他读写器。 尝试在整个程序中注释掉所有.close()语句,然后再次运行该程序。一旦发现问题,不要忘记让他们不注释。