.NETを使用すると、特定のポートにバインドする必要なく、どのポートで.255に送信されたudpブロードキャストパケットを聞くことができますか?どのポートでブロードキャストパケットをリッスンするか?
5
A
答えて
4
これを達成するには、UDPよりも低いレベルにする必要があると思います。
私が実際にやりたかったのは、オープンソースのパケットスニッファ/ネットワークアナライザ(Ethereal.com)をダウンロードし、ソースを調べてパケットの読み方を調べることです。
さらに見ると、パケットキャプチャについては、tcpdump.orgでかなりわかりました。
申し訳ありませんが、特定のコードスニペットを付けることはできません。私はいつも特定のポートにバインドしたかったのです。
0
リンクレベルでパケットをスニッフィングした後、UDPブロードキャストをフィルタリングするには、WinPCapなどを使用する必要があります。申し訳ありませんが、私はそこにこれ以上のレベルのAPIはないと思います。
6
私自身のやり方を見つけました。これは、それがどのように動作するかです:
非同期ハンドラでmainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
mainSocket.Bind(new IPEndPoint(IPAddress.Parse("192.168.0.1"), 0));
mainSocket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
byte[] byTrue = new byte[4] { 1, 0, 0, 0 };
byte[] byOut = new byte[4] { 1, 0, 0, 0 };
// Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
mainSocket.IOControl(IOControlCode.ReceiveAll, //Equivalent to SIO_RCVALL constant of Winsock 2
byTrue,
byOut);
//Start receiving the packets asynchronously
mainSocket.BeginReceive(byteData,0,byteData.Length,SocketFlags.None,new AsyncCallback(OnReceive),null);
、私はmainSocket.EndReceive(...)を行い、(マルチスレッド受信機を外部から制御)のデータを解析したい場合新しいBeginReceiveを開始します。
魅力的な作品です。 Hitesh Sharma(http://www.codeproject.com/KB/IP/CSNetworkSniffer.aspx)
関連する問題
- 1. MATLAB TCP/IPポートでのリッスン
- 2. マイクIOポートでアクティビティをリッスンするサウンドインターフェイス?
- 3. TCPポートCのデータをリッスンするC#
- 4. フェニックスをポート4000でリッスンするにはどうすればよいですか?
- 5. TCPポートへの連続リッスン
- 6. IntelliJ - 「ポートXXXXXでリッスンしているSnapShooter」?
- 7. Eclipseはポート42540でリッスンします(?)
- 8. 私のウェブサイトはポート8080をリッスンしますが、ポート80はリッスンしません(これはURLのデフォルトです)
- 9. 複数のプロセスが同じポートでリッスンしているかどうか
- 10. なぜmysqlはipv6のポート3306ではなく、ipv4のポートでリッスンする3306
- 11. node.jsアプリケーションはポートでリッスンする必要がありますか?
- 12. GoLangはポート範囲をリッスンします
- 13. 私のLANのホストを特定のポートでリッスンする
- 14. スピネーカーデッキはポート9000でリッスンしません
- 15. WindowsアプリケーションがEADDRINUSEで使用するポートをリッスンする
- 16. NodeJSサーバはいつかポートでリッスンを停止します
- 17. 私のサーバーアプリケーションがどのポートをリッスンしているかを、boost.asioがどのように発見するのか?
- 18. udpブロードキャストパケットを受信する
- 19. 特定のポートのすべてのデータをリッスンする
- 20. react-devtools:デフォルトでは、DevToolsはlocalhostのポート8097をリッスンします。どのようにカスタマイズするのですか?
- 21. Socket.ioがHTTPと同じポートをリッスンするのは良いですか?
- 22. 1つのポートは2つの異なるプロトコルをリッスンできますか?
- 23. androidでブロードキャストパケットを受信する方法
- 24. LinuxでUDPブロードキャストパケットを受信
- 25. DHCPクライアントがポート68でリッスンする理由
- 26. ポートが間違ったネットワークインターフェイスでリッスンする
- 27. Pythonソケットはすべてのポートでリッスンします
- 28. WebアプリケーションをブロックせずにCOMポートをリッスンする
- 29. HTTPハンドラを使用してポート80をリッスンする
- 30. Mac用DockerをTCPポートでリッスンします
バインディングの性質がこのシナリオを明示的に防止すると思いますが、Stack Overflowは私には分かりませんでした。この回答をお待ちしています... – grenade