31

C#経由で生のパケットイーサネットを他のホストに送信する方法はありますか?それが違いを生むならば、Windows7で。

4

3 に答える 3

20

Saint_plによる提案に基づく:

私はおそらくより良い解決策を見つけました-SharpPcapに似ています。それはPcap.Netです-WinPcapの.NETラッパー。これで、パケットを好きなように変更できます。


役立つと思われるリソースがいくつかあります。私はWindows7でそのソリューションを試していませんが、開始するためのいくつかの良い情報が含まれている可能性があります。

CodeProjectでの生のイーサネットパケット操作またはミラーリング

この記事のこの目的は、MicrosoftプラットフォームでC#を使用して生のイーサネットパケットを送信する方法を説明することです。生のイーサネットパケットは、物理ワイヤに送信される完全なレイヤ2ネットワークフレームです。このようなフレームを送信すると、ターゲットとソースのMACアドレス、およびレイヤ3プロトコルフィールドを操作できます。

また、rawソケットに関するいくつかの情報(あなたも興味がある場合に備えて):

クライアント(およびサーバー)ソケット通信 は、章全体を見ていきますが、ここでは重要な部分があります。

パケットを送信していませんが、おそらく興味深いものです:C#のネットワークスニファSharpPcap-.NET用のパケットキャプチャフレームワーク

于 2010-10-18T23:18:04.727 に答える
0

iphelper APIにはいくつかの低レベルのものがありますが、おそらく取得したいほど低くはありません

于 2010-10-18T22:57:43.077 に答える
-2
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);
于 2010-10-18T22:51:06.913 に答える