监控Qt中的应用网络流量

时间:2013-09-10 14:15:31

标签: c++ qt

我一直在搜索这个问题,但是有没有办法使用已经内置到Qt库中的设备监控来自特定应用程序的网络流量?我已经找到了一些使用WinPCap和其他类似工具的解决方案,但我希望将它全部保存在Qt(在C ++中),因为这是我最熟悉的。

谢谢!任何指针都非常感谢!

1 个答案:

答案 0 :(得分:0)

c#嗅探器套接字创建的一些示例。

    mainSocket = new Socket(AddressFamily.InterNetwork, SocketType.Raw,
                           ProtocolType.IP);

    // Bind the socket to the selected IP address
    mainSocket.Bind(newIPEndPoint(IPAddress.Parse(cmbInterfaces.Text),0));

    // Set the socket options
    mainSocket.SetSocketOption(SocketOptionLevel.IP,  //Applies only to IP packets
                               SocketOptionName.HeaderIncluded, //Set the include header
                               true);                           //option to true

    byte[] byTrue = newbyte[4]{1, 0, 0, 0};
    byte[] byOut = newbyte[4];

    //Socket.IOControl is analogous to the WSAIoctl method of Winsock 2
    mainSocket.IOControl(IOControlCode.ReceiveAll,  //SIO_RCVALL of Winsock
                         byTrue, byOut);

    //Start receiving the packets asynchronously
    mainSocket.BeginReceive(byteData, 0, byteData.Length, SocketFlags.None,
                            newAsyncCallback(OnReceive), null);

可能是qt为创建这样的套接字提供了一些api。创建这样的套接字后,你将获得解析标题的原始步伐,其他信息就在你身上。