在看到$ DISPLAY环境变量后我得到一个端口,并且需要检查当前程序运行的vnc是否已连接。
❯ netstat -an --tcp | grep 5902
tcp 0 0 0.0.0.0:5902 0.0.0.0:* LISTEN
以上是netstat输出。
在为端口建立的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的解决方案。