C# UDP服務編程(NativeErrorCode = 10054)

最近在開發一個UDP服務端程序,本來一切開發順序,暫時的測試也沒有任何問題。

在某一次測試中,服務器端在發送數據時捕獲到了一個異常,這個異常導致原因應該是遠程客戶端的UDP監聽已停止導致數據發送出錯。

按理說UDP是無連接的,報這個異常是不合理的。好吧,即使報了異常,也應該就報個異常罷了,沒想到的是這個異常讓整UDP的服務監聽也停止了。這樣就因爲一個客戶端的數據發送無法到達而導致了服務掛了,所有客戶端都無法與服務器通信了。

因此在網上各種搜索後找到了解決辦法,我們只要在初始化UDP服務時,應如下設置相關Socket,以上情況再發生時將不會捕獲到任何異常了。

                uint SIO_UDP_CONNRESET = 2550136844;
                IPEndPoint fLocalIPEndPoint = new IPEndPoint(IPAddress.Parse("192.168.1.103"), 6000);
                UdpClient mUdpServer = new UdpClient(fLocalIPEndPoint);
                mUdpServer.Client.IOControl((int)SIO_UDP_CONNRESET, new byte[1], null);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章