2012-12-14 58 views

回答

0

This CodeProject文章可能会帮助你。它链接到一个完整的演示项目下载。它已经存在了很长一段时间,毫无疑问在更高版本的.NET中有一些更简单的方法。但它仍然有效,应该给你你需要的东西。

一旦你得到了活动的TCP/IP连接列表,你应该拥有所有你需要的东西来挑选端口28961上的那个,并获取IP地址。

3

我写了一个类似的程序。我使用了SharpPcap组件。下面的代码应该能够让你开始:

private void StartCapture(ICaptureDevice device) 
    { 
     // Register our handler function to the 
     // 'packet arrival' event 
     device.OnPacketArrival += new SharpPcap.PacketArrivalEventHandler(device_OnPacketArrival); 

     // Open the device for capturing 
     int readTimeoutMilliseconds = 1000; 
     device.Open(DeviceMode.Normal, readTimeoutMilliseconds); 

     device.Filter = ""; 

     // Start the capturing process 
     device.StartCapture(); 
    } 

private void device_OnPacketArrival(object sender, CaptureEventArgs e) 
    { 
     var packet = PacketDotNet.Packet.ParsePacket(e.Packet.LinkLayerType, e.Packet.Data); 
     var ip = PacketDotNet.IpPacket.GetEncapsulated(packet); 

     if (ip != null) 
     { 
      int destPort = 0; 

      if (ip.Protocol.ToString() == "TCP") 
      { 
       var tcp = PacketDotNet.TcpPacket.GetEncapsulated(packet); 

       if (tcp != null) 
       { 
        destPort = tcp.DestinationPort; 
       } 
      } 
      else if (ip.Protocol.ToString() == "UDP") 
      { 
       var udp = PacketDotNet.UdpPacket.GetEncapsulated(packet); 

       if (udp != null) 
       { 
        destPort = udp.DestinationPort; 
       } 
      } 

      int dataLength = e.Packet.Data.Length; 

      string sourceIp = ip.SourceAddress.ToString(); 
      string destIp = ip.DestinationAddress.ToString(); 

      string protocol = ip.Protocol.ToString(); 
     } 
    } 

通过实现自己的,如果你应该能够得到你需要使用上面的代码语句。

+0

如何指定设备? – NMunro

相关问题