0

Socket クラスを拡張したところ、理解できないエラーが発生したため、助けを求めています。以下は短いスニペットです - 大したことはありません。間違ったホスト アドレスを挿入すると、最初にoperation time out. ただし、その後有効なアドレスを使用しようとすると、エラーが表示されますsocket closed。私はソケットを明示的に閉じていませんでした.printlnはsocket closed is false. なぜソケットが閉じたのですか?

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());
4

2 に答える 2

0

この例外は、アプリケーションがソケットを既に閉じており、現在もそれを使用し続けようとしていることを意味します。

于 2012-11-06T09:24:57.790 に答える
0

プログラム全体のどこかで、ソケット自体、または ObjectOutputStream または ObjectInputStream のいずれか、またはプログラムで使用されているその他のリーダー/ライターに対して close() を呼び出した可能性があります。プログラム全体のすべての .close() ステートメントをコメントアウトして、プログラムを再度実行してみてください。問題を発見したらすぐにコメントを外すことを忘れないでください。

于 2014-11-21T18:02:48.760 に答える