我遇到的这个问题有点奇葩,找了半天找不到原因,特来咨询一下大神
1、如题所说,是client端出现了close_wait,我的client端是linux系统。理论上在2小时后linux会自动检测这些连接,然后自动回收的,但是我发现并linux系统没有这么做。这是我想问的第一个问题,为什么linux不进行回收,难道当连接变成close_wait后还能进行数据通信?
2、我的java程序使用的PrintWriter进行数据发送,但是这个方法不会抛出异常。那么当连接进入close_wait后调用print或flush会发生什么?JavaLinuxTCP
1、如题所说,是client端出现了close_wait,我的client端是linux系统。理论上在2小时后linux会自动检测这些连接,然后自动回收的,但是我发现并linux系统没有这么做。这是我想问的第一个问题,为什么linux不进行回收,难道当连接变成close_wait后还能进行数据通信?
2、我的java程序使用的PrintWriter进行数据发送,但是这个方法不会抛出异常。那么当连接进入close_wait后调用print或flush会发生什么?JavaLinuxTCP
解决方案 »
- catch里写throw,用处是什么?
- java swing JTextField文本清空的问题。
- 怎样设置凹凸的线条啊
- 如何在一个提供多线程功能的Applet上输出1到20的数字?
- 请问使用JFreeChart绘制饼状图时如何显示百分比?
- E=希格玛i从1到n((Xi-C)的平方) 如何用JAVA实现
- 请问各位高手...
- 我的JB6,在输入代码时,光标总是靠前一个字符???
- 在java程序中如何实现保存、打开、删除、查找文件的功能?
- 与DB2的连接用DriverManager怎么取得!!!
- form表单提交数据问题 大神帮忙
- 相同的web.xml在tomcat上可以用,在weblogic上不能启动不了了。
一般收到对方的FIN后,就应该关闭这个socket了,以完成tcp连接的正常关闭。继续发送已经没意义了,除非本身是这样设计的。
楼主可以参考一下。有神马不对的地方也欢迎指正
我这个连接是长连接,除非检查到该连接通信异常,我才会去主动断开。现在是对方已经断开了,但是不知为何我这边的TCP连接却一直处于close_wait,却不释放,导致该连接坏死,任何使用这个连接的操作都失败。所以现在我希望是能检测到这种异常并主动断开连接,但是我的程序一直检测不到这个连接已坏
那这种情况应该怎么做?对方丢弃数据时,我这边如何能判断出?
inputStream.read()==-1表明对方已经关闭,你也应该关闭socket了。