gpt4 book ai didi

c++ - 如何计算与服务器的 SYN/ESTABLISHED 连接?

转载 作者:太空宇宙 更新时间:2023-11-04 03:03:27 26 4
gpt4 key购买 nike

我想使用 C/C++ 获取到我的服务器的 SYN 和 ESTABLISHED 连接数。但我不想调用 popen 来运行 netstat 或任何其他 Linux 命令。我设法扫描了/proc/net/ip_conntrack 并获得了数字。但我意识到扫描 ip_conntrack 需要大量资源,每次我的应用程序调用该方法时。还有其他简单的方法吗?

最佳答案

扫描 /proc/net/ip_conntrack 是不可靠的,因为它仅在启用 netfilter/连接跟踪时才有效。它不仅计算您的服务器的连接数,还计算通过您的服务器的连接数(如果它充当路由器)。

更好的方法是在与 netstat 相同的位置获取信息:/proc/net/tcp, /proc/net/tcp6(以及 UDP 和其他协议(protocol)的类似文件,如果您关心的话)。不过,这或多或少需要在您的应用程序中重新实现 netstat。你不得不怀疑它是否值得。此外,调用 netstat 是可移植的(或多或少),而直接读取这些文件是特定于 Linux 的。

我知道您担心每次扫描整个表所需的资源,但我认为没有“订阅”并在建立或断开新连接时获得通知的说法。我能想到的最接近类似的事情是嗅探网络接口(interface)(使用 libpcap)并自己跟踪连接设置和拆卸。

关于c++ - 如何计算与服务器的 SYN/ESTABLISHED 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8846482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com