-2

リモート ソケットが閉じられている間に UDP ソケットからデータを受信して​​いる間、理想的には「ICMP Destination Host Unreachable」データを返す必要があります。

Windows 7 オペレーティング システムと VC2010 上に構築されたアプリケーションで同じことをテストしました。

FD_READ イベントが設定され、recvfrom() 関数が呼び出されると、SOCKET_ERROR が返され、WSAGetLastError() はエラー コード 0 を返します。これは、「操作が正常に完了した」ことを意味します。 ICMP データを正常に読み取ります。

抜け出す方法をおしえてください。

4

2 に答える 2

1

ここにはいくつかの間違いがあります。

  1. ピアが閉じている UDP ソケットからの読み取りは、無期限にブロックされるか、タイムアウトになるはずです。

  2. UDP には RST パケットや ECONNRESET はありません。これは TCP 現象です。

  3. 「宛先に到達できません」は、受信しようとしたときに発生せず、送信時にのみ発生します。UDP はコネクションレス プロトコルです。読み取り時にピアが閉じているという固有の認識はありません。

于 2012-08-21T12:10:26.483 に答える
1

あなたは間違っています(おそらくTCPの観点から考えています)-リモートエンドは、UDPソケットが閉じられたことを通信しません。ICMP 応答は、特定のポートがバインドされていないリモート エンドに何かを送信した場合にのみ生成されます。

于 2012-08-21T12:12:17.023 に答える