读书人

怎么判断Socket连接失效

发布时间: 2012-09-23 10:28:11 作者: rapoo

如何判断Socket连接失效

现在都搞升级,本人也也使用JDK6进行开发。在开发工程中对Socket进行管理时对于这个连接的超时和是否失效进行研究。结果网上的资料很是让人失望,可以说google和百度下来,前几页原创很少都是抄袭。

说正经的,对于连接超时和失效肯定会想到设置超时时间和判断连接是否可用。但是设置超时时间后起作用是在调用read方法的时候,如果只是设置了超时时间却没有调用read,那么就算服务端中断连接,客户端也是无法得知的。而且就算read异常,当前的连接仍然是有效的。

我们来看如下代码运行后再继续:

服务端:

InputStream ips = socket.getInputStream();byte[] bt = inputStreamToByte(ips);if(null != bt)System.out.println(new String(bt));elseSystem.out.println("Bt is null");System.out.println("****************************");

?bt会一直是Null。为什么?因为我说的是对的!

哥通过示例说问题,也许不对有纰漏,但是咱绝对不去Copy,因为咱已经看厌了Copy!

?

1 楼 zhangzhikaixinya 2012-04-26 感谢分享!讲的很好 2 楼 cuisuqiang 2012-04-26 zhangzhikaixinya 写道感谢分享!讲的很好
大家一起进步,欢迎提出批评 3 楼 moyan03 2012-04-27 LZ讲的挺好的,我的那个发送了心跳了没有报错,但是卡在了读input那了。 4 楼 cuisuqiang 2012-04-27 moyan03 写道LZ讲的挺好的,我的那个发送了心跳了没有报错,但是卡在了读input那了。
就是说一直没有读到数据吧 5 楼 moyan03 2012-05-02 cuisuqiang 写道moyan03 写道LZ讲的挺好的,我的那个发送了心跳了没有报错,但是卡在了读input那了。
就是说一直没有读到数据吧
是的,用的DataInputStream。
6 楼 chenhua_1984 2012-05-23 程序正常运行,网线拔掉,socket.sendUrgentData(0xFF)方法要等待大概3分钟才报错?请教楼主这个有没有办法让它立即报错???????
7 楼 cuisuqiang 2012-05-23 chenhua_1984 写道程序正常运行,网线拔掉,socket.sendUrgentData(0xFF)方法要等待大概3分钟才报错?请教楼主这个有没有办法让它立即报错???????

你好,请你参考http://cuisuqiang.iteye.com/blog/1489661,这是我自己写的一个Socket连接池管理器,希望对你有所帮助!

读书人网 >编程

热点推荐