2014-01-08 51 views
2

我想在C++中建立一个程序来查看客户端连接到游戏网站的游戏服务器。对于程序,我们需要能够看到客户端是否连接到特定的服务器。我已经使用wireshark进行了测试,该程序可以看到来往于服务器的传入/传出连接 - 这是我需要的确切的事情,但我只是不知道该怎么做。我知道你可以通过使用netstat命令提示符来查看哪些端口连接正在进出,但是netstat并没有提供我之后的详细信息。我所需要做的就是扫描他们的传出连接并将其与IP进行比较,如果IP匹配,则他们连接到服务器。有没有办法看到与C + +传入/传出连接?

这是可能通过c + +?如果没有,有谁知道wireshark是如何做到的?

干杯。

回答

0

退房libpcap的http://www.tcpdump.org/

您可能需要解构UDP/TCP数据包本身。

如果您想要更简单的解决方案,您可以将tcpdump的输出作为标准输入输出。你可以给tcpdump过滤器,以确保你的应用程序不会被无用的内容垃圾邮件。

+1

Thankyou。我最终找到了一个叫做tshark的wireshark版本,它使用命令行,基于这个答案 - 然后我可以在我的程序中使用它。谢谢你的回答,这正是我需要的! – CynePhoba

1

这取决于您的操作系统,在Windows和Linux中有所不同。

在Linux中,您可以使用lsof -p [PID]获取有关程序套接字的所有信息,其中PID是程序的PID。

要在您自己的程序中执行此操作,请查看lsof源代码并查看它是如何完成的。我记得,它是通过读取/ proc中的文件完成的。

在Windows中,您可以尝试C++ Get Handle of Open Sockets of a Program

相关问题