如何使用 C 检查本地计算机上的端口(如果也需要传递 IP 或接口)是否处于侦听状态?我不想连接到这个端口进行检查,因为我不想激怒这个端口后面的服务。
我想用它来将缺少的 net.tcp.listen 项目添加到 Zabbix。
编辑-这是真正的答案:
正确的方法是读取套接字表:
/proc/net/tcp
/proc/net/tcp6
它们包含如下行:
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode
0: 00000000:1F40 00000000:0000 0A 00000000:00000000 00:00000000 00000000 101 0 4083927 1 f5d15240 750 0 0 2 -1
1: 00000000:2742 00000000:0000 0A 00000000:00000000 00:00000000 00000000 1002 0 6100 1 decd76c0 750 0 0 2 -1
并且可以轻松解析监听套接字(dst:00000000:0000)。 netstat 上的 strace 显示 netstat 的工作方式相同。
只需尝试打开端口进行监听即可。你会得到一个错误。
您无法从另一个进程窃取端口,因此这将是安全的,并且当然易于实现,因为除了正确的错误处理之外,它不需要其他代码。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)