3

C#でBOOTPサーバーを作成しようとしています。

クライアントからBOOTPパケットを受信して​​解析しているので、サーバーのIPアドレスで応答する必要があります。

問題は:

  • コンピューターは複数のネットワークアダプターを持つことができます
  • クライアントはまだIPアドレスを持っていません

UDPパケットが受信されたアダプタを見つける方法はありますか?

4

1 に答える 1

2

これを行うにはいくつかの方法があります。各物理インターフェイスの各 IP に個別のソケットをバインドすると、パケットが到着したインターフェイスを常に知ることができます。IP_RECVIF フラグを recvmsg ソケット関数と一緒に試すこともできますが、それが Windows でサポートされているかどうかはわかりません。Steven's には、Unix Network Programming のセクション 22.2 および 22.6 に例があります。ioctl で SIOCGIFCONF フラグを使用して、マシン上のインターフェースのリストを取得できます。UNP セクション 17.6 にサンプル プログラムがあります。C# でこれらの関数にアクセスできないが、Windows でサポートされている場合は、単純な C プログラムを作成してインターフェイス/IP 情報を収集および更新し、mmap を使用して C# プログラムとインターフェイス列挙子の間でメモリ領域を共有できます。

于 2010-02-18T14:38:54.410 に答える