黑马程序员技术交流社区
标题:
socket与IO的关闭关联
[打印本页]
作者:
丁朋伟
时间:
2011-9-20 17:02
标题:
socket与IO的关闭关联
今天学习网络编程,自己写个模拟QQ
客户端创建了两个输出流
DataInputStream dis1 = new DataInputStream(socket.getInputStream());
File file = new File(dis1.readUTF());
System.out.println(dis1.readUTF());
dis1.close();
DataInputStream dis2 = new DataInputStream(socket.getInputStream());
File file = new File(dis2.readUTF());
System.out.println(dis2.readUTF());
dis2.close();
运行时发现 java.net.SocketException: Socket is closed错误
断点运行发现错误出现在 dis1.close();之后
查看文档发现
如果此套接字具有关联的通道,则得到的输出流会将其所有操作委托给通道。如果通道为非阻塞模式,则输出流的 write 操作将抛出
IllegalBlockingModeException
。
关闭返回的
OutputStream
将关闭关联套接字。
恍然大悟啊
作者:
匿名
时间:
2011-9-21 08:46
老大,你写的这个程序,什么逻辑啊,何必为难自己
作者:
匿名
时间:
2011-9-21 08:51
理解您的心情,我在轻狂的时候也这样
作者:
匿名
时间:
2011-9-21 09:30
[ code]DataInputStream dis1 = new DataInputStream(socket.getInputStream());
File file = new File(dis1.readUTF());
System.out.println(dis1.readUTF());
dis1.close();
DataInputStream dis2 = new DataInputStream(socket.getInputStream());
File file = new File(dis2.readUTF());
System.out.println(dis2.readUTF());
dis2.close();
[/code]
看代码,第一次的dis1关闭之后,构造方法了里的socket也关闭了,等下次你再拿socket.getInputStream时。socket是关闭的。
作者:
匿名
时间:
2011-9-21 09:30
[code]DataInputStream dis1 = new DataInputStream(socket.getInputStream());
File file = new File(dis1.readUTF());
System.out.println(dis1.readUTF());
dis1.close();
DataInputStream dis2 = new DataInputStream(socket.getInputStream());
File file = new File(dis2.readUTF());
System.out.println(dis2.readUTF());
dis2.close(); [/code]看代码,第一次的dis1关闭之后,构造方法了里的socket也关闭了,等下次你再拿socket.getInputStream时。socket是关闭的
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2