用什么软件做介绍视频网站,秦皇岛建设规划,平凉市网站建设制作,wordpress插件用户权限在进行JAVA网络编程时#xff0c;发现写入的数据对方等200ms左右才会收到。起初认为是JAVA自已进行了 Cache。进行flush也没有效果。查看JDK代码#xff0c;Write操作直接调用的native方法#xff0c;说明JAVA层面并没有缓存。再看flush#xff0c;只是一个空方法. FileOut… 在进行JAVA网络编程时发现写入的数据对方等200ms左右才会收到。起初认为是JAVA自已进行了 Cache。进行flush也没有效果。查看JDK代码Write操作直接调用的native方法说明JAVA层面并没有缓存。再看flush只是一个空方法. FileOutputStream一样在进行write的时候已经写入OS。后来发现是tcpNoDelay的问题。参考: http://www.iteye.com/topic/1110883 http://bugs.sun.com/bugdatabase/view_bug.do;jsessionid61e3ecc1489150ffffffffcc5ccaf3f797827?bug_id4358695. 另外一个问题 对方把连接关闭了。但发送方还能写入数据有时第二次才会出错。经调查取证这是因为对于Tcp/Ip协议向一个已收到Fin包的Socket数据是可行但向一个收到Reset的Socket发送数据则会出现异常。需要发送两次才能出现异常,这是因为第一次发送数据时当时的Socket只收到了Fin包所以正常。第一次的数据发送到对方对方因连接已关闭协议栈回复Reset. 所以发送方第二次时发送数据时这里的Socket收到了Reset所以出现异常。 参考http://blog.csdn.net/raintungli/article/details/8625126 本文转自 anranran 51CTO博客原文链接:http://blog.51cto.com/guojuanjun/1188161