我在看到$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 解决方案。
我认为您可以使用您想要其状态的端口创建一个套接字。如果套接字创建成功,则表示端口已关闭,否则将打开。喜欢这个