我有以下代码:

    private Socket mSenderSocket = null;

    private DataInputStream in = null;
    private DataOutputStream out = null;

    ...

        try
        {
            mSenderSocket = new Socket(java.net.InetAddress.getByName(TCP_SERVER_IP), 12345);
            out = new DataOutputStream(mSenderSocket.getOutputStream());
            in = new DataInputStream(mSenderSocket.getInputStream());
        }
        catch (UnknownHostException ex)
        {
           System.err.println("Don't know about host.");
        }
        catch(IOException ex)
        {
            System.err.println("Couldn't get I/O");
        }

我对以下情况感兴趣:

在聊天 session 期间,如果发生I/O异常,则我必须执行以下操作:
mSenderSocket = new Socket(java.net.InetAddress.getByName(TCP_SERVER_IP);

现在,DataInputStreamDataOutputStream会发生什么?

我是否应该再次初始化这些对象?

最佳答案

几乎可以肯定的是,在错误情况下,您想扔掉整个对象并重新开始,或者甚至根本不构造该对象。

(您可能还希望在其上关闭finallySocket。碰巧的是,在流或close上调用Socket将完全关闭所有三个对象。)

10-07 20:02