[英]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.