网站首页 > 开源技术 正文
在使用HttpClient调用后台resetful服务时,Connection reset是一个比较常见的问题。
导致“Connection reset”的原因是服务器端因为某种原因关闭了Connection,而客户端依然在读写数据,此时服务器会返回复位标志“RST”,然后此时客户端就会提示“java.net.SocketException: Connection reset”。
服务器关闭了Connection为什么会返回“RST”而不是返回“FIN”标志?
原因在于Socket.close()方法的语义和TCP的“FIN”标志语义不一样:发送TCP的“FIN”标志表示我不再发送数据了,而Socket.close()表示我不再发送也不接受数据了。
问题就出在“我不接受数据” 上,如果此时客户端还往服务器发送数据,服务器内核接收到数据,但是发现此时Socket已经close了,则会返回“RST”标志给客户端。当然,此时客户端就会提示:“Connection reset”。
另外还有一种比较常见的错误“Connection reset by peer”,该错误和“Connection reset”是有区别的:
* 服务器返回了“RST”时,如果此时客户端正在从Socket套接字的输出流中读数据则会提示Connection reset”;
* 服务器返回了“RST”时,如果此时客户端正在往Socket套接字的输入流中写数据则会提示“Connection reset by peer”。
- 上一篇: java组件HuTool相关工具类的使用(六)
- 下一篇: 谈谈个人对JDK函数式编程的认知与使用
猜你喜欢
- 2024-10-10 使用java连接SFTP记录(java sftp auth fail)
- 2024-10-10 使用maven也能一键部署Springboot项目
- 2024-10-10 在java中使用SFTP协议安全的传输文件
- 2024-10-10 如何实现通过JAVA远程执行重启tomcat操作?
- 2024-10-10 谈谈个人对JDK函数式编程的认知与使用
- 2024-10-10 java组件HuTool相关工具类的使用(六)
- 2024-10-10 基于SpringBoot打造的一套集开发与运维为一体的辅助系统
- 2024-07-05 Linux服务器间ssh免密配置(linux服务器之间免密登录)
- 2024-07-05 巧用GenericObjectPool创建自定义对象池
- 2024-07-05 springboot 使用Hutool 的 JschUtil
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- jdk (81)
- putty (66)
- rufus (78)
- 内网穿透 (89)
- okhttp (70)
- powertoys (74)
- windowsterminal (81)
- netcat (65)
- ghostscript (65)
- veracrypt (65)
- asp.netcore (70)
- wrk (67)
- aspose.words (80)
- itk (80)
- ajaxfileupload.js (66)
- sqlhelper (67)
- express.js (67)
- phpmailer (67)
- xjar (70)
- redisclient (78)
- wakeonlan (66)
- tinygo (85)
- startbbs (72)
- webftp (82)
- vsvim (79)
本文暂时没有评论,来添加一个吧(●'◡'●)