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

时间:2018-01-11 07:29:19

标签: c linux sockets networking tcp

在看到$ 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的解决方案。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用您希望其状态的端口创建套接字。如果套接字成功创建,则表示端口已关闭,否则它已打开。 like this