我正在處理一個商業(yè)應(yīng)用程序,它會拋出帶有消息的SocketException,現(xiàn)有連接被遠(yuǎn)程主機強制關(guān)閉。這發(fā)生在客戶端和服務(wù)器之間的套接字連接上。連接是活動的和良好的,大量的數(shù)據(jù)正在被傳輸,但隨后它就從不知道的地方斷開了連接。有人見過這個嗎?原因是什么?我可以猜到幾個原因,但有沒有辦法在這段代碼中添加更多的內(nèi)容來找出原因呢?歡迎任何意見/想法。..最新的.。我有一些.NET跟蹤的日志記錄,System.Net.Sockets Verbose: 0 : [8188] Socket#30180123::Send() DateTime=2010-04-07T20:49:48.6317500ZSystem.Net.Sockets Error: 0 :
[8188] Exception in the Socket#30180123::Send - An existing connection was forcibly closed by the remote host DateTime=2010-04-07T20:49:
48.6317500Z System.Net.Sockets Verbose: 0 : [8188] Exiting Socket#30180123::Send() -> 0#0基于日志記錄的其他部分,我看到了這樣一個事實,即“0#0”表示發(fā)送的數(shù)據(jù)包長度為0字節(jié)。但這到底意味著什么?有兩種可能性,我不確定哪一種,1)連接正在關(guān)閉,但數(shù)據(jù)隨后被寫入套接字,從而創(chuàng)建了上述異常。0#僅僅意味著沒有發(fā)送任何東西,因為套接字已經(jīng)關(guān)閉。2)連接仍然處于打開狀態(tài),一個零字節(jié)的數(shù)據(jù)包正在發(fā)送(即代碼有一個錯誤),0#表示一個零字節(jié)的數(shù)據(jù)包正在試圖發(fā)送。你覺得呢?我想這可能是不確定的,但也許其他人見過這樣的事情?
3 回答

函數(shù)式編程
TA貢獻1807條經(jīng)驗 獲得超9個贊
這通常意味著遠(yuǎn)程端關(guān)閉了連接(通常通過發(fā)送tcp/ip)。RST
(郵包)如果您正在使用第三方應(yīng)用程序,可能的原因是:
- 您正在向應(yīng)用程序發(fā)送格式錯誤的數(shù)據(jù)。
- 由于某種原因,客戶機和服務(wù)器之間的網(wǎng)絡(luò)連接正在中斷。
- 您在第三方應(yīng)用程序中觸發(fā)了一個導(dǎo)致其崩潰的錯誤。
- 第三方應(yīng)用程序已經(jīng)耗盡了系統(tǒng)資源。

30秒到達戰(zhàn)場
TA貢獻1828條經(jīng)驗 獲得超6個贊
SocketError errorCode; int nBytesRec = socket.EndReceive(ar, out errorCode); if (errorCode != SocketError.Success) { nBytesRec = 0; }
- 3 回答
- 0 關(guān)注
- 3030 瀏覽
添加回答
舉報
0/150
提交
取消