在C#中捕獲網絡數據包可以使用第三方庫,例如SharpPcap或PacketDotNet。以下是一個簡單示例來捕獲網絡數據包:
using System;
using SharpPcap;
class Program
{
static void Main(string[] args)
{
// 設置設備
CaptureDeviceList devices = CaptureDeviceList.Instance;
if (devices.Count < 1)
{
Console.WriteLine("No devices found.");
return;
}
ICaptureDevice device = devices[0];
device.OnPacketArrival += new PacketArrivalEventHandler(device_OnPacketArrival);
// 打開設備
device.Open(DeviceMode.Promiscuous);
Console.WriteLine("Listening on " + device.Description + "...");
// 開始捕獲數據包
device.Capture();
}
private static void device_OnPacketArrival(object sender, CaptureEventArgs e)
{
// 處理捕獲到的數據包
Console.WriteLine("Packet captured at " + e.TimeStamp.ToString("HH:mm:ss.fff"));
}
}
在上面的示例中,我們使用SharpPcap庫來捕獲網絡數據包。首先,我們獲取設備列表并選擇第一個設備。然后,我們訂閱OnPacketArrival
事件來處理捕獲到的數據包。當數據包到達時,device_OnPacketArrival
方法會被調用,并輸出捕獲到的數據包的時間戳。
請注意,捕獲網絡數據包可能需要管理員權限,因此您可能需要以管理員身份運行程序。