基本信息
源码名称:c# socket 抓包
源码大小:0.08M
文件格式:.rar
开发语言:C#
更新时间:2016-06-02
   友情提示:(无需注册或充值,赞助后即可获取资源下载链接)

     嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300

本次赞助数额为: 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));
            }
        }