日期:2014-05-20  浏览次数:20928 次

请教个SocketException Socket is closed异常问题
初学Socket,嘿嘿


ServerSocketFactory factory = ServerSocketFactory.getDefault();
ServerSocket serverSocket = factory.createServerSocket(8888);
Socket socket = serverSocket.accept();


OutputStream out = socket.getOutputStream();
InputStream in = socket.getInputStream();
// 用in和out做一些事情
// 。。。

// 关闭
socket.getOutputStream().close();
socket.getInputStream().close();// 这句抛SocketException socket is closed
socket.close();
serverSocket.close();


直接使用out.close()和in.close()就没有问题。。。

是getInputStream()抛的异常。用==判断了一下,getInputStream()返回的和in是同一个对象。不知为何不能重新用get方法获得一遍。
------解决方案--------------------
肯定的,你用in out 关闭是关闭你在socket中使用的IO流,你用socket再次调用get input stream是重新建立对象,不是关闭上次使用的IO流