在Linux上使用c ++获取活动的TCP / UDP连接

时间:2014-11-10 13:47:27

标签: c++ linux tcp

我正在制作需要在c ++中获得活动TCP / UDP连接的程序? 。我知道我可以通过使用IP Helper API在Windows上完成它,但我想知道如何在C ++中获取活动连接但在Linux上。是使用 popen()功能和 netstat 命令选择好还是什么?抱歉英文不好:)

2 个答案:

答案 0 :(得分:1)

您可以阅读以下文件:

  • / proc / net / udp
  • 的/ proc /净/ 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)提供了更多信息。

答案 1 :(得分:0)

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

$ netstat -st

netstat反过来从/ proc / net / snmp获取此信息。如果您不能依赖DUT上的netstat,则可以以编程方式从/ proc / net / snmp中读取值。