c++ - 如何使用 C++ 在 Solaris 中获取事件端口信息(重新创建 `netstat command`)?

标签 c++ networking port solaris netstat

我想使用 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是一个符号链接(symbolic link) tp devices/pseudo/tcp@0:tcp而且我不太确定这意味着什么或如何打开和查询它。

Solaris 的 netstat 使用什么函数/头文件/文件?它在幕后做什么?

我已经查找了它的源代码,但除了死链接或重定向到 Oracle 主页的链接之外似乎找不到任何其他内容。此源代码的有效链接将回答我的问题

最佳答案

Solaris /proc/ procfs 有进程信息。没有别的,或者没有别的。 Linux 将其扩展为实际上包括各种系统信息,而不仅仅是进程。

您总是可以通过/dev/tcp 的模糊ioctl() 来获取您的信息。更好的是,您应该能够使用 SMF(服务管理框架)查询某些网络服务的属性以获取您的信息(键入 svcs 以获取服务列表)

关于c++ - 如何使用 C++ 在 Solaris 中获取事件端口信息(重新创建 `netstat command`)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55854483/

相关文章:

c++ - Qt 无法将事件发送到不同线程拥有的对象

c++ - Vector & Stack Overflow - Part Deux

c - Linux : receive from socket with timeout?

sockets - 用于发送控制台消息的 TCP/IP 默认端口?

c++ - 处理 async_accept 时不接受?

c++ - 非模板类方法的完美转发

android - 下载管理器使用平台默认值在 Android 9.0 NetworkSecurityConfig : No Network Security Config specified, 上返回不成功的下载

c# - 如何通过 C# 在 Windows 8 中禁用/启用网络

networking - Nginx-错误 : bind() to 0. 0.0.0 :80 failed. 权限被拒绝

node.js - 使用 Heroku 的多端口应用程序的推荐方法