2009-06-19 58 views
11

我々は、ネットワーク上で パケットを送受信する.NET 2.0デスクトップアプリケーションを持っています。UDPソケットのソケットエラー10052

時折ソケットエラー10052が発生し、UDPソケット上でsocket.BeginReceiveFromというコードが呼び出されると、 が発生することがあります。

これはどういう意味ですか?

ソケットエラー10052のための公式のMSのドキュメントは言う - 引用: 「WSAENETRESET(10052)ネットワークがリセットの接続を切断し、接続 キープアライブする 操作の進行中に活動が故障を検出するため破損しています。既に が失敗した接続で SO_KEEPALIVEを設定しようとすると、setsockoptによって返される可能性があります。

これは、UDPが コネクションレスプロトコルであるため、UDPソケットにはあまり意味がありません。

私はUDPソケットとの接続 している別の近いエラーコード10054を知るには、ICMPメッセージ「ポート到達不能」を受信したことを意味し、10052は、他のICMPメッセージにマッピングする可能性がある場合、私は 疑問に思って?

私は何ヶ月もグーグルでこれを読んだり、ネットワークブックなどを読んだり、 が見つかりませんでした。 お願いします - UDPソケット上のソケットエラー10052はどういう意味ですか?事前に

おかげで

答えて

2

WSAE NET RESETは、それが原因のネットワークインタフェース自体のリセットに起こることを示唆しています。プログラムはUDPポートにバインドされているので、ある意味ではですが、リモートピアではなくネットワークインターフェイスに接続されています。

このBeginReceiveFrom呼び出しが行われるポイントまでプログラムを開始し、デバイスマネージャでNICを無効にしてから再度有効にしてください。または、Wi-Fiを使用して、WAPへの接続を解除して再確立します。最近のバージョンのWindowsでは、このNICが接続されているすべてのソケットがデフォルトで強制的に切断されるため、イーサネットケーブルをコンピュータに接続するだけで問題が発生する可能性があります。

これは、フィールドからの珍しい問題のレポートを説明します。おそらく、ハードウェアレベルでローカルネットワーク障害が発生している場合にのみ発生します。

7

recvfrom機能を説明するhttp://msdn.microsoft.com/en-us/library/ms740120%28v=vs.85%29.aspxを参照してください。

データグラムソケットの場合、このエラーは、有効期間が切れていることを示します。このエラーは、WSAENETRESET(winsockエラー10052)です。

+2

これは、UDP実装が無駄にアプリケーションに報告する多くのエラーの1つです。あなたはそれらをすべて無視する必要があります。 –

3

UDPデータグラムを送信するときは、TTL値が十分に高いことを確認してください。

UdpClientクラスを使用している場合。 次にデータグラムを送信する前に、以下を使用:

myUdpClient.Ttl = 255; 

注:255は、TTLの最大値です。 その値では不十分な場合、ネットワークに問題があります。