C语言 有没有办法以编程方式识别 tcp 连接/端口的状态?



我在看到$DISPLAY环境变量后得到了一个端口,需要检查运行当前程序的vnc是否连接。

❯ netstat -an --tcp | grep 5902
tcp        0      0 0.0.0.0:5902            0.0.0.0:*               LISTEN 

以上是网络统计输出。

在为端口建立的 tcp 连接上,输出如下:

$ netstat -an --tcp | grep 5902
tcp        0      0 0.0.0.0:5902            0.0.0.0:*               LISTEN     
tcp        0      0 172.16.100.219:5902     172.16.100.129:35542    ESTABLISHED

可以从C/C ++代码中调用netstat,如下所示

port = process_display(std::getenv("DISPLAY"))
is_connected = call_this("netstat -anp | grep <porttocheck> | grep ESTABLISHED | wc -l");

我需要is_connected并做一些逻辑。

但是,这取决于多种因素,如果程序要在不同的机器上运行,我宁愿不依赖于从代码调用netstat。

有没有更好的方法来检查端口是否具有已建立的TCP连接,从C代码?解析/proc/或类似的东西看起来也很不奇怪。

我只接受 Linux 解决方案。

我认为您可以使用您想要其状态的端口创建一个套接字。如果套接字创建成功,则表示端口已关闭,否则将打开。喜欢这个

最新更新