首页 >后端开发 >C++ >为什么我的 TCP 服务器显示'无法从传输连接读取数据”,如何修复它?

为什么我的 TCP 服务器显示'无法从传输连接读取数据”,如何修复它?

Patricia Arquette
Patricia Arquette原创
2025-01-20 06:31:13512浏览

Why Does My TCP Server Show

对 TCP 服务器中的“无法从传输连接读取数据”进行故障排除

当客户端尝试连接时,TCP 服务器有时会遇到错误“无法从传输连接读取数据:现有连接被远程主机强制关闭”。本文探讨了常见原因并提供了解决方案。

该错误经常出现在 sr.ReadLine() 期间的第 96 行(在提供的服务器代码示例中)附近,通常源于传输级安全配置错误。

TLS 握手和安全协议兼容性

SSL/TLS 握手期间客户端和服务器之间的 TLS 协议版本不匹配是导致此错误的主要原因。 System.Net.ServicePointManager.SecurityProtocol 属性是解决此问题的关键。

虽然 .NET 通常会自动协商 TLS 版本,但客户端和服务器功能之间的不一致可能会导致握手失败和错误消息。

解决方案:显式设置安全协议

为了确保兼容性,请使用 SecurityProtocol 属性显式定义支持的 TLS 版本。 添加此行建立连接之前:

<code class="language-csharp">System.Net.ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;</code>

此代码片段支持 TLS 1.0、1.1 和 1.2。 客户端和服务器上的 TLS 版本匹配可以保证握手成功,从而使服务器能够不间断地从客户端读取数据。

以上是为什么我的 TCP 服务器显示'无法从传输连接读取数据”,如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn