2012-12-14 57 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

相關問題