生のイーサネットパケットをC#で送信するにはどうすればよいですか? [閉まっている
-
09-10-2019 - |
質問
c#を介して生のパケットイーサネットを他のホストに送信する方法はありますか? Windows 7では、違いが生じる場合。
解決
Saint_plによる提案に基づいて:
おそらくより良い解決策を見つけました - Sharppcapに似ています。これは pcap.net -winpcapの.netラッパー。今、私は自分のパケットを何でも変更できます。
私はあなたのためのいくつかのリソースを持っています。私はWindows 7でその解決策を試していませんが、開始するための良い情報が含まれているかもしれません。
生のイーサネットパケット操作 また CodeProjectのミラー
この記事のこの目的は、MicrosoftプラットフォームでC#を使用して生のイーサネットパケットを送信する方法を説明することです。生のイーサネットパケットは、物理ワイヤに送信される完全なレイヤー2ネットワークフレームです。このようなフレームを送信すると、ターゲットとソースMACアドレスとレイヤー3プロトコルフィールドを操作できます。
また、生のソケットに関する情報もあります(あなたも面白い場合に備えて):
クライアント(およびサーバー)ソケット通信 章全体をご覧くださいが、ここで重要な部分:
- C#RAW UDPソケットプログラムの例
- C#生のソケットPingプログラムの例 パートA | パートb
- すべての例
パケットを送信していませんが、面白いかもしれません: C#のネットワークスニファー, Sharppcap- .NETのパケットキャプチャフレームワーク
他のヒント
iPhelper APIにはいくつかの低レベルのものがありますが、おそらくあなたが取得したいほど低くはありません
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("10.25.184.11"), 4456);
server.Connect(ip);
byte[] sendData = new byte[] { 0, 8, 32, 64 };
server.Send(sendData);
//done. now let's listen for data
byte[] receiveData = new byte[1024];
int receivedDataLength = server.Receive(receiveData);
//if the response is a string message
string stringData = Encoding.ASCII.GetString(receiveData, 0, receivedDataLength);
Console.WriteLine(stringData);
所属していません StackOverflow