リモートホストが特定のUDPポート番号をリッスンしているかどうかを確認しようとしています。私はこれを(C#で)次のように行います:
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
int sent = socket.SendTo(bufsend, bufsend.Length, SocketFlags.None, endpoint);
int recv = socket.ReceiveFrom(bufrecv, ref endpoint);
誰もリッスンしていない場合、ICMP「ポート到達不能」が発生します。これは、ErrorCode WSAECONNRESET(10054)を使用してソケット例外として受信時に報告されます。それはすべて理にかなっていますが、Windowsファイアウォールが無効になっている場合にのみ発生します。ファイアウォールが有効になっている場合(プログラムの例外を作成した場合でも)、おそらくファイアウォールがICMPの「ポートに到達できません」を食いつぶしたためにErrorCode WSAETIMEDOUT(10060)が表示されます。
助言がありますか?ファイアウォールの「高度なセキュリティ」設定を調べましたが、役に立ちませんでした。
ありがとう...