我有以下代码:
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);
现在,
DataInputStream
和DataOutputStream
会发生什么?我是否应该再次初始化这些对象?
最佳答案
几乎可以肯定的是,在错误情况下,您想扔掉整个对象并重新开始,或者甚至根本不构造该对象。
(您可能还希望在其上关闭finally
的Socket
。碰巧的是,在流或close
上调用Socket
将完全关闭所有三个对象。)