【问题标题】:Access to TCP statistics/information per socket possible? (C/C++)可以访问每个套接字的 TCP 统计信息/信息吗? (C/C++)
【发布时间】:2011-05-11 08:28:48
【问题描述】:

我需要一些信息,例如我创建的特定 TCP-Socket 发生的重新发送包/数据包丢失的数量。有人知道如何直接从我的 C/C++ 程序访问或请求此类信息吗?也许是特定于 Linux 的东西?

或者我是否需要(作为一种解决方法)捕获和分析我自己的流量?

提前致谢!

【问题讨论】:

    标签: c++ c sockets tcp network-programming


    【解决方案1】:

    通过使用getsockopt() 获取或setsockopt() 设置TCP 套接字选项,您可以在Linux 机器上使用TCP_INFO 选项来获取有关套接字的信息。如果您希望代码可移植,则应避免使用此选项。

    您将得到来自内核的struct tcp_info,其中包含重传、丢失数据包、状态等信息。

    【讨论】:

    • 遗憾的是,这并不容易找到,而且 tcp_info 似乎没有很好的文档记录。但是,经过一些试验和错误后,它似乎可以提供我需要的东西。谢谢!
    • 这里有一篇文章:linuxgazette.net/136/pfeiffer.html "第一部分包括管理信息,例如状态、重传、keepalive 探测和选项。还有更多,我通过 Linux 内核代码发现值来自哪里以及它们的含义。您可以获得的最佳文档是查看内核的源代码 .../net/ipv4/tcp.c 并查看 tcp_info 是如何填充的。查找 tcp_get_info()函数里面,并在.../include/net/tcp.h中查找struct tcp_sock的定义。大部分数据都是从这个结构中复制过来的。”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2010-10-13
    • 2011-02-24
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多