当客户端尝试连接时,TCP 服务器有时会遇到错误“无法从传输连接读取数据:现有连接被远程主机强制关闭”。本文探讨了常见原因并提供了解决方案。
该错误经常出现在 sr.ReadLine()
期间的第 96 行(在提供的服务器代码示例中)附近,通常源于传输级安全配置错误。
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中文网其他相关文章!