有没有办法用c ++查看传入/传出连接?

时间:2014-01-08 02:24:07

标签: c++ wireshark connection

我正在尝试用c ++构建一个程序,以查看客户端连接到游戏站点的游戏服务器。对于程序,我们需要能够查看客户端是否连接到特定服务器。我已经使用wireshark进行了测试,这个程序可以看到进出服务器的传入/传出连接 - 这正是我需要的东西,但我不知道该怎么做。我知道您可以通过使用netstat使用命令提示符查看哪些端口连接进出,但netstat不会提供我之后的详细信息。我需要做的就是扫描他们的传出连接并将其与IP进行比较,如果IP匹配,那么他们就连接到服务器。

这可以通过c ++实现吗?如果没有,有没有人知道wireshark是如何做到的?

干杯。

2 个答案:

答案 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过滤器,以确保您的应用程序不会被无用的内容发送垃圾邮件。