娃哈哈 发表于 2017-5-3 11:57:12

SharpPcap类问题求助

var devices = CaptureDeviceList.Instance;//instance报红
            //IP = ipAddress;
            int count = devices.Count;//count报红
            if (count < 1)
            {
                Console.WriteLine("No device found on this machine");
                return;
            }


            //开始抓包
            for (int i = 0; i < count; ++i)
            {
                for (int j = 0; j < ports.Count; ++j)
                {
                  CaptureFlowRecv(IP, ports, i);
                  CaptureFlowSend(IP, ports, i);
                }
            }
      }
      #region 获取IP地址
      /// <summary>
      /// 获取IP地址
      /// </summary>
      /// <returns></returns>
      public static string GetIPAdrress()
      {
            List<IPAddress> PhysicalIP = new List<IPAddress>();//物理网卡IP地址(包括无线,有线,不包括虚拟网卡)
            NetworkInterface[] adapters = NetworkInterface.GetAllNetworkInterfaces();//获取本机所有网卡对象
            foreach (NetworkInterface adapter in adapters)
            {
                if (!adapter.Description.Contains("Virtual") && !adapter.Description.Contains("VMnet"))//枚举条件:描述中包含"Virtual"
                {
                  IPInterfaceProperties ipProperties = adapter.GetIPProperties();//获取IP配置
                  UnicastIPAddressInformationCollection ipCollection = ipProperties.UnicastAddresses;//获取单播地址集
                  foreach (UnicastIPAddressInformation ip in ipCollection)
                  {
                        if (ip.Address.AddressFamily == AddressFamily.InterNetwork)//只要ipv4的
                            PhysicalIP.Add(ip.Address);
                  }
                }
            }

            //获取所有IP地址,包括有线,无线,虚拟网卡
            String LocalhostName = Dns.GetHostName();
            IPHostEntry host = Dns.GetHostEntry(LocalhostName);
            List<IPAddress> addresses = new List<IPAddress>();
            foreach (IPAddress ip in host.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork && PhysicalIP.Contains(ip))
                {
                  addresses.Add(ip);
                }
            }
            if (addresses.Count == 0)
                return "";
            return addresses.ToArray().ToString();
      }
      #endregion
      public void CaptureFlowSend(string IP, int portID, int deviceID)
      {
            ICaptureDevice device = (ICaptureDevice)CaptureDeviceList.New();

            device.OnPacketArrival += new PacketArrivalEventHandler(device_OnPacketArrivalSend);

            int readTimeoutMilliseconds = 1000;
            device.Open(DeviceMode.Promiscuous, readTimeoutMilliseconds);

            string filter = "src host " + IP + " and src port " + portID;
            device.Filter = filter;
            device.StartCapture();
            ProcInfo.dev.Add(device);
      }

ibcadmin 发表于 2017-5-4 08:58:28

.. CaptureDeviceList引用的不对 。。 你发了好多重复的帖子
页: [1]
查看完整版本: SharpPcap类问题求助