在linux上的c++中获取活动的TCP/UDP连接

Getting active TCP/UDP connections in c++ on linux

本文关键字:TCP UDP 连接 活动 获取 linux 上的 c++      更新时间:2023-10-16

我正在制作一个程序,该程序需要在c++?中获得活动的TCP/UDP连接。我知道我可以通过使用IP助手API在windows上实现这一点,但我想知道如何在C++中但在Linux上获得活动连接。使用popen()函数和netstat命令是一个很好的选择还是什么?抱歉英语不好:)

您可以读取以下文件:

  • /proc/net/udp
  • /proc/net/tcp

这些文件的内容是以下类型的文本:

sl  local_address rem_address   st tx_queue rx_queue tr tm->when retrnsmt   uid  timeout inode
0: 00000000:5AA0 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 237373 1 cf0bc900 100 0 0 10 -1
1: 00000000:5AA1 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 237409 1 cf0be880 100 0 0 10 -1
2: 00000000:5AA2 00000000:0000 0A 00000000:00000000 00:00000000 00000000     0        0 237435 1 cf0bdf80 100 0 0 10 -1

手册页proc(5)提供了更多信息。

要获取活动连接打开次数、失败连接尝试次数、接收的段数、发送的段数等,可以使用netstat

$ netstat -st

netstat反过来从/proc/net/snmp获得这些信息。如果您不能依赖于DUT上的netstat,您可以通过编程从/proc/net/snmp读取值。