【发布时间】:2019-09-15 04:37:51
【问题描述】:
我想使用 C++ 重新创建 netstat 命令以获取所有活动端口信息(特别是 netstat -f <unix/inet/inet6> -u)。我已经在 Windows、Linux 和 macOS 上完成了这项工作。在我认为与 Solaris 最相似的 Linux 上,我解析了 /proc/net/tcp 等以获取此信息。这个文件在 Solaris 中不存在,我找不到类似的东西。我无法弄清楚 Solaris 上的 netstat 究竟在做什么来获取它的信息。
man netstat 在底部说“netstat 实用程序通过打开 /dev/tcp 并发出查询从系统获取 TCP 统计信息”。 /dev/tcp 是一个符号链接 tp devices/pseudo/tcp@0:tcp 我不太确定这意味着什么或如何打开和查询它。
Solaris 的 netstat 使用哪些函数/头文件/文件?它在后台做什么?
我已经查找了它的源代码,但除了死链接或重定向到 Oracle 主页的链接之外似乎找不到任何东西。此源代码的有效链接将回答我的问题
【问题讨论】:
-
记住:在像 ***x 这样的系统上,一切都是文件。
-
您是否考虑过查看
netstat的Solaris 端口的源代码?这就是我首先要做的。 -
OpenSolaris 是开源的。闲暇时看看他们的 netstat 实现。或者,
dtracenetstat. -
@JesperJuhl 这是我的第一个想法。但是我遇到的链接都死了。这些链接是cvs.opensolaris.org/source/xref/netvirt/usr/src/cmd/cmd-inet/… 和cvs.opensolaris.org/source/xref/netvirt/usr/src/cmd/cmd-inet/…。这些是我在尝试查找源代码时能找到的唯一线索。
-
@SergeyA 你知道那个代码在哪里吗?我找到的指向他们代码的链接 a) 显示“我们很抱歉 java.net 站点已关闭。”或重定向到 Oracle 主页
标签: c++ networking port solaris netstat