簡體   English   中英

當我的一個客戶端崩潰時,NetworkStream.Write掛起我的服務器應用程序

[英]NetworkStream.Write hangs my sever app when one of my clients crashed

我有一個clien-server .net應用程序,通過tcp進行通信。 我的服務器定期向客戶端發送原始字節數據包。

它有99.9%的時間很好用,但有時候,當我的一個客戶崩潰時(一年兩次,而不是更多)我的服務器掛起。

我調試它(​​通過向我的客戶端添加一些測試代碼來崩潰我的應用程序),並注意到問題在於stream.Write(bytes, 0, bytes.Length); 它簡單沒有做任何事情,沒有回應,沒有回報,只是掛起。 Stream是一個NetworkStream。

我之前檢查了stream.CanWrite ,但它的響應是真的。

那么,我如何檢查服務器端,我的一個客戶崩潰了? 在將數據發送到其他客戶端之前,我應該檢查NetworkStream(或其他什么)?

將超時設置為TCP連接的套接字。 看起來現在它是無限的,所以服務器無限期地等待來自死客戶端的響應。

寫入可能只是因為另一方沒有從套接字讀取並且它們的OS套接字緩沖區已滿(但它們沒有關閉套接字,也沒有處於錯誤狀態)。

以下是對此類場景的描述: http//stringarray.net/? p = 29

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM