嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元微信扫码支付:2 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
c# socket 抓包
/// <summary>
/// 抓取数据
/// </summary>
public void CaptureNetwork()
{
_socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, 1);
byte[] optionInValue = BitConverter.GetBytes(1); //操作输入数据
byte[] optionOutValue = BitConverter.GetBytes(0); //操作返回的输出数据
_socket.IOControl(IOControlCode.ReceiveAll, optionInValue, optionOutValue); //对IO设置为可以接受所有包
int bufferLen = 102400; //缓存大小设置,将设置为 102400 = 100KB,小了可能一次放不下
byte[] buffer = new byte[bufferLen]; //定义缓存包
IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 0); //从任何地方接收数据
while (true)
{
EndPoint endPoint = (EndPoint)ipEndPoint;
//从绑定的 socket 接收数据,存入接收缓冲区
int receive = _socket.Receive(buffer, SocketFlags.None);
byte[] data = new byte[receive]; //定义接收到的字节数组
NetworkPacket packet;
if (receive < bufferLen)
{
data = buffer.Take(receive).ToArray();
packet = new NetworkPacket(data, 0, receive);
}
else
{
data = buffer;
packet = new NetworkPacket(data, 0, data.Length);
}
OnSniffNetworkEvent(this, new SniffNetworkEventArgs(DateTime.Now, packet));
}
}