我一直在搜索这个问题,但是有没有办法使用已经内置到Qt库中的设备监控来自特定应用程序的网络流量?我已经找到了一些使用WinPCap和其他类似工具的解决方案,但我希望将它全部保存在Qt(在C ++中),因为这是我最熟悉的。
谢谢!任何指针都非常感谢!
答案 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。创建这样的套接字后,你将获得解析标题的原始步伐,其他信息就在你身上。