我正在尝试用c ++构建一个程序,以查看客户端连接到游戏站点的游戏服务器。对于程序,我们需要能够查看客户端是否连接到特定服务器。我已经使用wireshark进行了测试,这个程序可以看到进出服务器的传入/传出连接 - 这正是我需要的东西,但我不知道该怎么做。我知道您可以通过使用netstat使用命令提示符查看哪些端口连接进出,但netstat不会提供我之后的详细信息。我需要做的就是扫描他们的传出连接并将其与IP进行比较,如果IP匹配,那么他们就连接到服务器。
这可以通过c ++实现吗?如果没有,有没有人知道wireshark是如何做到的?
干杯。
答案 0 :(得分:1)
这取决于您的操作系统,在Windows和Linux中有所不同。
在Linux中,您可以使用lsof -p [PID]
获取有关程序套接字的所有信息,其中PID是程序的PID。
要在您自己的程序中执行此操作,请查找lsof源代码并查看其完成方式。我记得,它是通过读取/ proc。
中的文件来完成的在Windows中,您可以尝试C++ Get Handle of Open Sockets of a Program
答案 1 :(得分:0)
查看libpcap http://www.tcpdump.org/
您可能需要自己解构UDP / TCP数据包。
如果你想要一个更简单的解决方案,你可以将tcpdump的输出作为stdin。您可以提供tcpdump过滤器,以确保您的应用程序不会被无用的内容发送垃圾邮件。