當客戶端嘗試連線時,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中文網其他相關文章!