UDP 遠程主機強迫關閉了一個現有連接


 

UDP 遠程主機強迫關閉了一個現有的連接。

轉載

一直郁悶 UDP不是面向非連接的??

 

在UDP通信過程中,如果客戶端中途斷開,服務器會收到一個SocketException,錯誤ID為10054,描述是“遠程主機強迫關閉了一個現有的連接”,緊接着的事就可怕了,UDP服務終止監聽,所有客戶端都受到了影響。也就是說一個客戶端引起的異常導致了整個系統的崩潰。

 

找了好幾天了。終於找到了解決辦法。

 

在初始化對象后設置屬性如下:

                    uint IOC_IN = 0x80000000;
                    uint IOC_VENDOR = 0x18000000;
                    uint SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
                    ClientSocket.IOControl((int)SIO_UDP_CONNRESET, new byte[] {Convert.ToByte(false)}, null);

 

Socket.IOControl 方法 (IOControlCode, Byte[], Byte[])

使用 IOControlCode 枚舉指定控制代碼,為 Socket 設置低級操作模式。

參數

ioControlCode

一個 IOControlCode 值,它指定要執行的操作的控制代碼。

optionInValue

Byte 類型的數組,包含操作要求的輸入數據。

optionOutValue

Byte 類型的數組,包含由操作返回的輸出數據。

 

 

返回值

optionOutValue 參數中的字節數。

UDP <wbr>遠程主機強迫關閉了一個現有的連接。 異常
異常類型 條件

SocketException

試圖訪問套接字時發生錯誤。有關更多信息,請參見備注部分。

ObjectDisposedException

Socket 已關閉。

InvalidOperationException

試圖不使用 Blocking 屬性更改阻止模式。

UDP <wbr>遠程主機強迫關閉了一個現有的連接。 備注

此方法提供對 Socket 類的當前實例所基於的操作系統 Socket 的低級訪問。有關更多信息,請參見 MSDN Library 中的 WSAIoctl 文檔。

 

希望對碰到這個問題的朋友有幫助。不用像我找好幾天


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM