2

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

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

4

1 回答 1

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。创建此类套接字后,您将在解析标头和其他信息时获得原始数据。

于 2013-09-10T14:31:43.290 回答