我有一個用C#編寫的代理服務器,它作爲Windows服務運行。它監聽127.0.0.1:xxxxx,其中xxxxx可以是從53500起的一系列端口。C#模擬TCP端口沒有響應
該代理工作得很好,但有時某些端口停止響應,當我嘗試遠程登錄到它時,它表示請求超時或沒有響應。
我一直沒有能夠在我的開發領域重現這個問題,但我認爲它與導致BeginReceive不會在EndReceive之後被調用的事情有關。以下引用來自關於我正在經歷的症狀的線索。
類似的問題是,當使用異步通信,並有一個執行路徑,事實證明一旦以前的EndReceive完成後,不會調用BeginReceive。這使得套接字無法接收遠端發送的所有數據。
有沒有一種方法來模擬端口停止響應的情況。我想寫一些代碼來檢查端口是否正在響應,然後繼續請求。如果它沒有響應,我可以刪除該端口上的偵聽器並重新添加它。這是一種幫助我們確定問題原因的方法,以防止代理崩潰。
我也添加了一些額外的日誌記錄來確定是什麼導致端口停止響應。
您可以在懷疑問題出在哪裏添加代碼嗎? – jlafay 2011-02-09 18:06:36