如何计算Go中的ESTABLISHED连接?

时间:2014-12-09 02:44:28

标签: networking go connection cross-platform netstat

我试图在Go中基本上这样做:

netstat -an | grep 2375 -c

我需要在回归测试中计算连接泄漏错误的Docker守护程序连接数。但是,因为我在不同操作系统(本地开发盒,CI等)的多个地方运行它,所以我不能依赖于" netstat"工具,所以我想知道如何在Go中以更加程序化的方式做到这一点?

我环顾网络包,找不到任何有用的东西。有些库基本上取代了netstat:

https://github.com/drael/GOnetstat https://github.com/dominikh/netstat-nat

但它们不符合跨平台标准(Mac和* nix)。任何想法我怎么能实现这个目标?

1 个答案:

答案 0 :(得分:0)

在linux中,此信息在/proc文件系统中公开。 使用os.Getpid并查询/proc/<pid>/fd中的信息。很可能这里的简单计数很好,如果你需要更多,请参阅proc man page

这种事物的跨平台兼容性将是你自己的,因为识别进程的开放fd的方法非常适用于每个平台。如果您只是需要编译,并在非Linux平台上为此传递一些测试,您可以使用Go's per platform支持在其他平台上使其成为无操作,或者实现适当的解决方案。