一、一般代码编写方式:

CloseableHttpClient httpclient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(url);
try {CloseableHttpResponse response = httpclient.execute(httpPost);HttpEntity httpEntity = response.getEntity();return EntityUtils.toString(httpEntity, charset);} catch (Exception e) {logger.error("message code : " + e.getMessage(), e);} finally {httpPost.releaseConnection();}

二、现象

如果分开机子,一台机子跑服务器,一台机子跑客户端,客户端使用HttpClient4来进行请求。

会发现TIME_WAIT(连接哪端主动关闭,TIME_WAIT将出现在哪端,并且等待2MSL时间才会回收,大约一分钟)均在客户端。

但是按照我们以前学校的知识点,http请求结束后,应该是由服务器关闭才是。

三、原因

其实这是自己知识点不足导致的,

HttpClient4发送的其实是http1.1的,而我上边的服务器自动关闭的知识点是http1.0的,

http1.0 默认短连接,服务器主动关闭, 需要长连接需要配置keepalive

http1.1 默认长连接,因此服务器不会主动关闭,而httpclient4我们一般会直接写httpPost.releaseConnection(),因此自然是我们客户端主动关闭了

通过nc -l port, 也可以知道httpclient4默认发送的http1.1协议的

因此,如果还是希望服务器短连接并且主动关闭,可以配置Connection:close在http header

HttpClient4 客户端出现TIME_WAIT相关推荐

  1. MQTT客户端连接服务器协议,mqtt客户端和服务器长连接

    mqtt客户端和服务器长连接 内容精选 换一换 介绍设置客户端和服务器的安全认证方式的相关参数.参数说明:表明与服务器建立链接后,不进行任何操作的最长时间.参数类型:USERSET取值范围:整型,0- ...

  2. 网络编程释疑之:TCP的TIME_WAIT状态在服务器开发中的影响?

    在进行TCP高并发服务器开发时,有些规则仿佛是约定俗成的,很多朋友会依据这些规则去做,比如高并发TCP服务器中进行主动关闭的一方最好是客户端.服务器端程序最好启用SO_REUSEADDR选项,但是很多 ...

  3. TCP协议客户端与服务器端一般的通信过程

    服务器初始化 (1)调用socket,创建文件描述符 (2)调用bind,将文件描述符与ip/port连接起来.若端口号已被占用,则bind失败 (3)调用listen,声明该文件描述符是服务器的一个 ...

  4. netstat -ano | findstr 8611查看到大量的TIME_WAIT状态的解决办法

    最近使用wsdlpull开源库curl模块调用webservice服务的压力测试的时候遇到的一个问题,其直接表象是客户端在发送http请求时失败,最终原因是客户端的TIME_WAIT状态的socket ...

  5. TIME_WAIT详解

    1.time_wait状态是什么 简单来说:time_wait状态是四次挥手中服务器向客户端发送FIN终止连接后进入的状态. 下图为tcp四次挥手过程 可以看到time_wait状态存在于客户端收到服 ...

  6. socket服务器区分各个客户端信息,socket服务器如何区分哪个客户端

    socket服务器如何区分哪个客户端 内容精选 换一换 要访问您的文件系统,如果是Linux云服务器,您需要在Linux云服务器上安装NFS客户端后使用挂载命令挂载文件系统:如果是Windows云服务 ...

  7. TCP 连接管理机制(二)——TCP四次挥手的TIME_WAIT、CLOSE_WAIT状态

    介绍三次握手的时候,着重了解的是三次握手过程中,应用层和传输层做了哪些工作:下面在了解四次挥手的时候,主要了解的是四次挥手的状态变化. 目录 一.四次挥手 1.第一次挥手 2.第二次挥手 3.第三次挥 ...

  8. 客户端发送协议包给服务器,TCP协议的客户端与服务器的通信过程

    使用TCP时,客户端与服务器端的通信流程 服务器初始化 1)调用socket,创建文件描述符fd 2) 调用bind将fd与服务器的IP与PORT绑定 3)调用listen将套接字设为监听模式,准备接 ...

  9. TCP三次握手四次挥手及time_wait状态解析

    TCP的建立--三次握手 1.服务器必须准备好接受外来的连接.通常通过调用socket,bind,listen这三个函数来完成,我们称之为被动打开(passive open). 2. 客户端通过调用c ...

最新文章

  1. MATLAB【四】 ————批量适配图片信息与excel/txt等文档信息,批量移动拷贝图片,批量存图片中点和方框
  2. 计算机模拟组装测试题一,江苏专转本计算机模拟自测试题(一)
  3. ClickHouse之Distributed Query Execution
  4. 短距离车间通信V2X简述
  5. channel(4)定时器
  6. 微服务架构最强讲解,那叫一个通俗易懂!
  7. QStackedWidget设置无效问题
  8. 列出IIS上的虚拟目录和网站信息。
  9. 顶社区创始人:解读顶社区的背后的事
  10. 市场营销分析--页面广告统计
  11. IHS遥感图像融合算法及其相关的算法
  12. java Hashtable 和 HashiMap 的区别
  13. 【平面设计基础】01:抠图—薄、透、露的朦胧美
  14. 查看文件的MD5值得方法 (校验完整性)
  15. h5移动端生成海报,图文结合
  16. 查看Linux下的文件
  17. 502粘到手上变硬了怎么办_手指被502粘住了?别硬扯,教你2招,胶水自动融化...
  18. 氢os android8,一加8T或预装氢OS11系统,基于Android 11定制
  19. oracle fx成立时间,oracle 日期格式FM/FX和日期后缀SP/TH/SPTH/THSP
  20. 什么是亚稳态,如何消除?

热门文章

  1. 关于信息安全制度中等级保护与分级保护的异同
  2. carbondate mysql_CarbonData集成Hive、Spark
  3. java毕业设计厨房管理系统Mybatis+系统+数据库+调试部署
  4. 内存管理 - mblock算法
  5. 查看Linux 、Apache 、 MySQL 、 PHP 版本的方法
  6. PPC WM6.1智能手机上使用日语辞典浅谈
  7. rootfs 制作ubuntu_如何构建一个arm64 AArch64的Ubuntu rootfs
  8. Windos 系统安装 Themebeta Chrome主题
  9. go list 转 map;数组转map 通用
  10. 用米思齐+点灯科技——ESP32点灯实验