0

クライアントUDPアプリケーションにC#プログラムを使用しています。アプリケーションは接続をリッスンしてから通信します。

Socket udpClient = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
udpClient.Bind(new IPEndPoint(IPAddress.Any, ListenPort));
udpClient.Blocking = true;
int count = 0;

while (count == 0) udpClient.ReceiveFrom(receiveBuffer, ref ePoint);
udpClient.SendTo(data, endPoint);
udpClient.ReceiveFrom(receiveBuffer, ref ep);
...

Wiresharkを使用してアプリケーションをデバッグします。問題は、しばらくすると、アプリケーションが不正な形式のSTUNパケットの送信を開始することです。そのため、インターネット上のルーターによって拒否されると思います。

質問:不正な形式のUDP / STUNパケットの送信を防ぐことは可能ですか?

4

1 に答える 1

0

アプリケーションが不正な UDP パケットを送信する場合、バグがあります。コードの最小フラグメントには、SendTo 呼び出しが 1 つしかありません。データの内容・長さのチェック機能を追加できます。

ところで: UDP はコネクションレスです。あなたのアプリケーションは、接続ではなく、リクエストまたは一種の開始コマンドを待っていると言えます。

于 2010-08-26T13:53:41.367 に答える