如何在C#中获得以太网头?

时间:2011-11-20 13:15:09

标签: c#

我使用以下C#代码获取网络数据包。

int len_receive_buf = 4096;
int len_send_buf = 4096;
byte[] receive_buf = new byte[len_receive_buf];
byte[] send_buf = new byte[len_send_buf];
int cout_receive_bytes;
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP);
socket.Blocking = false;
IPHostEntry IPHost = Dns.GetHostByName(Dns.GetHostName());
socket.Bind(new IPEndPoint(IPAddress.Parse(IPHost.AddressList[0].ToString()), 0));
socket.SetSocketOption(SocketOptionLevel.IP , SocketOptionName.HeaderIncluded, 1);

byte []IN = new byte[4]{1, 0, 0, 0};
byte []OUT = new byte[4];            
int ret_code = socket.IOControl(IOControlCode.ReceiveAll, IN, OUT);           
while (true)
{
    IAsyncResult ar = socket.BeginReceive(receive_buf, 0, len_receive_buf, SocketFlags.None, null, this);
    cout_receive_bytes = socket.EndReceive(ar);
    Receive(receive_buf, cout_receive_bytes, countPckts);
}

我也得到了从'IP Header'开始的网络数据包。但我需要网络数据包,包括'Frame Header'/'Ethernet Header'。我必须要有以太网头部分。

请帮帮我,如何在C#中获取包括“Ethernet Header”在内的网络数据包。

0 个答案:

没有答案