问题现象
服务端报远程主机强迫关闭了一个现有的连接,抓包发现,返回给客户端RST
问题分析,从抓包看是服务端返回给客户端RST,是服务端主动关闭了连接,但是服务端实际上是报错,关闭了连接。

java.io.IOException: 远程主机强迫关闭了一个现有的连接。at sun.nio.ch.SocketDispatcher.read0(Native Method) ~[?:1.8.0_222]at sun.nio.ch.SocketDispatcher.read(SocketDispatcher.java:43) ~[?:1.8.0_222]at sun.nio.ch.IOUtil.readIntoNativeBuffer(IOUtil.java:223) ~[?:1.8.0_222]at sun.nio.ch.IOUtil.read(IOUtil.java:192) ~[?:1.8.0_222]at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:380) ~[?:1.8.0_222]at io.netty.buffer.PooledByteBuf.setBytes(PooledByteBuf.java:253) ~[netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.buffer.AbstractByteBuf.writeBytes(AbstractByteBuf.java:1132) ~[netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.socket.nio.NioSocketChannel.doReadBytes(NioSocketChannel.java:350) ~[netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:151) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:719) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:655) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:581) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [netty-all-4.1.63.Final.jar:4.1.63.Final]at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [netty-all-4.1.63.Final.jar:4.1.63.Final]at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222]

从报错堆栈看,应该是服务端解析客户端发送的数据异常,所以关闭了连接,因此还是要从客户端发送的报文入手。
因为是https协议的连接,因此修改服务端使用的加密套件,获取服务使用的jks证书,导入wireshark解析出报文,发现客户端header、body都有。
由于通过postman发送的请求可以正常解析,因此通过比对postman发送的报文,发现区别主要是在Content-Length这个头上。
又因为指定了使用HTTP 1.1,并且指定了keep alive,因此服务端是根据content-length来解析的body的,错误的content-length导致了服务端解析失败。
解决办法:
1、可以修改content-length,使用正确的值
2、也可以使用短连接,这样就不用通过content-length来判断要读取的报文大小了
3、指定Transfer-Encoding头,来使content-length失效

远程主机强迫关闭了一个现有的连接相关推荐

  1. mysql远程主机强迫关闭了一个现有连接_asp.net连接mysql出现了远程主机强迫关闭了一个现有的连接。!!!...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 [SocketException (0x2746): 远程主机强迫关闭了一个现有的连接.] System.Net.Sockets.Socket.Recei ...

  2. python 网络编程 socket 报错 ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

    服务端: # -*- coding: utf-8 -*- """ @File : 191226_基于UDP协议的socket_server端.py @Time : 201 ...

  3. Adb connection Error:远程主机强迫关闭了一个现有的连接

    [2013-07-19 09:32:07 - DeviceMonitor] Adb connection Error:远程主机强迫关闭了一个现有的连接. [2013-07-19 09:32:08 -  ...

  4. python post 远程主机强迫关闭了一个现有的连接_ConnectionResetError:[WinError10054远程主机强迫关闭一个现有连接...

    最近在使用Airtest这套框架尝试web自动化界面测试的时候,在脚本之前都可正常运行的情况下,偶有的时候遇到连接错误,报错:Connection abourted. ConnectionResetE ...

  5. C#中UDP通信过程中出现:远程主机强迫关闭了一个现有的连接0x80004005】的解决方法

    在UDP通信过程中, 使用try...catch语句接受数据时,总是会出现一个错误: System.Net.Sockets.SocketException (0x80004005): 远程主机强迫关闭 ...

  6. 【转】解决WCF大数据量传输 ,System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接...

    开发中所用的数据需要通过WCF进行数据传输,结果就遇到了WCF大量传输问题 也就是提示System.Net.Sockets.SocketException: 远程主机强迫关闭了一个现有的连接 网上解决 ...

  7. python: 使用socket实现局域网不同主机通信。解决ConnectionResetError: [WinError 10054] 远程主机强迫关闭了一个现有的连接。

    目录 1 socket的使用 1.1 TCP方法 1.2 UDP方法 2 局域网内连接 2.1 总结 1 socket的使用 1.1 TCP方法 在socket中使用socket.socket建立会话 ...

  8. sonarqube 启动不了,异常提示:远程主机强迫关闭了一个现有的连接

    启动sonarqube 6.7.1 报下面的错误: 2018.01.24 10:10:56 WARN app[][o.e.t.n.Netty4Transport] exception caught o ...

  9. java nio 强制关闭_Java NIO服务器:远程主机强迫关闭了一个现有的连接

    Java NIO聊天室 中,若客户端强制关闭,服务器会报"java.io.IOException: 远程主机强迫关闭了一个现有的连接.",并且服务器会在报错后停止运行,错误的意思就 ...

  10. python post 远程主机强迫关闭了一个现有的连接_Python最强动态可视化库!

    后台回复1024,解锁无限快乐! bar_chart_race 一个库「Bar Chart Race」,堪称Python界最强的动态可视化包. GitHub地址:https://github.com/ ...

最新文章

  1. FreeSwitch Sip【转】
  2. Android Security视频学习合集
  3. 利用JavaScript选择GridView行
  4. if命令在HTML语言中 隐藏部分内容,vuejs使用v-if隐藏不需要的内容,生成的html标签中有!-----,请问怎样去掉这些注释?...
  5. nodejs操作redis总结
  6. 人人开源-后台前后端快速开发
  7. OFD文件是什么?如何将ofd转成PDF格式?
  8. 512 排序预演_最小数置前
  9. rtorrent ubuntu端命令行种子下载器
  10. QQ邮箱开通exchange的方法
  11. http client的英文文档 牛逼
  12. EasyExcel 实践与源码梳理
  13. vuex简单入门:singer实例创建以及读写全过程
  14. android 相机 app,android – Emulator的相机内置app buggy在Froyo / 2.2?
  15. Unusual Minesweeper
  16. TMI8140大电流强力马达驱动芯片,让按摩再“爽一点”
  17. 将Word文档转化为HTML格式的文件
  18. Microsoft Project 2010 (Beta)下载
  19. 素数计数公式全面拉丁化改写-小有改进-Meissel公式-梅塞尔-Lehmer公式-莱梅=勒梅尔-筛法三种形式-孟庆余公式(转载)...
  20. 图像常见格式及转换(BGR,YUV,NV12,YUV444)

热门文章

  1. JavaScript练习题四
  2. 缓存(Cookie,SessionStorage,localStorage)详解
  3. 在Ubuntu18.04上安装视频播放器smplayer
  4. Android应用商店——项目介绍
  5. mac 打开网页慢_Safari打开网页卡住或加载极慢问题解决方案
  6. DAY3:尚学堂高琪JAVA(33~40)
  7. tc android开发工具,TC5.0 (一个脚本开发工具)其底层实现原理分析与推测(半成品)...
  8. 阿里云:疫情期间全力保障教育平台“停课不停学”
  9. 邮件服务器公网IP被国外反垃圾联盟(PBL)列入黑名单移除操作方法
  10. 学习编程需要英语很好吗?