netlink学习笔记之NETLINK_INET_DIAG获取TCP连接状态(netstat)

netlink学习笔记之NETLINK_INET_DIAG获取TCP连接状态(netstat)

在平时的工作中,我们经常会用到netstat这个命令来查看Linux系统的tcp连接情况,ss命令是用来代替netstat查看系统连接状态的新的工具,在ss中就是使用NETLINK技术来获取网络连接状态的。

示例代码:

运行截图:
image

参考资料:
https://my.oschina.net/umu618/blog/351007

除非注明,否则均为浮生笔记原创文章,转载必须以链接形式标明本文链接

本文链接:https://www.dennisthink.com/2020/11/21/902/

2 thoughts on “netlink学习笔记之NETLINK_INET_DIAG获取TCP连接状态(netstat)

  1. 你好,最近处理netlink的问题,正好搜索到了你的实现。代码写的很清晰,一眼就让我学会了。
    不过有个问题, recvmsg 这里你虽然写成 循环获取,但是只处理了一次就返回了。buffer里边很有可能还有数据。
    因此在 status > 0 这个分支不能return, 只有recvmsg 到了EOF的时候才退出。(但是你的socket又设置成了noblock,使用sleep的方式不可靠,建议接到epoll上面。)

    1. 1.关于recvmsg的问题,你的意见是正确的,当时我写的时候没有考虑全部情况。
      2.使用sleep,是比较方便,不想再增加epoll了(我对epoll也不太熟悉).

Leave a Reply

Your email address will not be published. Required fields are marked *