gpt4 book ai didi

java - 单个连接的Netstat?

转载 作者:行者123 更新时间:2023-12-04 06:38:22 26 4
gpt4 key购买 nike

在 Linux 上,有没有办法以编程方式获取单个 TCP 连接的统计信息?我正在寻找的统计数据是由 netstat -s 打印出来的那种。 ,但对于单个连接而不是所有连接的聚合。举一些例子:字节输入/输出、重传、丢包等等。

我可以在拥有套接字的进程中运行代码,并且可以为它提供套接字文件描述符。但是,发送/接收数据的代码是遥不可及的,因此例如无法包装 recv()/send()计算输入/输出字节数。

我会接受任何语言的答案,但 C 或 Java 与标签特别相关。

最佳答案

信息nos指的是可从 C 中获得:

#include <linux/tcp.h>
...
struct tcp_info info;
socklen_t optlen;
getsockopt(sd, IPPROTO_TCP, TCP_INFO, &info, &optlen)

不幸的是,由于这是特定于 Linux 的,它没有通过 Java Socket API 公开。如果有办法从套接字获取原始文件描述符,您也许可以将其作为 native 方法来实现。

我看不到获取描述符的方法。但是,您可以使用自己的 SocketImplFactorySocketImpl .

可能值得注意的是 TCP(7) manual page说这重新 TCP_INFO:

This option should not be used in code intended to be portable.

关于java - 单个连接的Netstat?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4593568/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com