首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Linux内核获取套接字的详细信息

从Linux内核获取套接字的详细信息
EN

Stack Overflow用户
提问于 2012-10-05 08:44:56
回答 1查看 935关注 0票数 1

我有一个用户空间应用程序,它创建了几个原始套接字(具有不同协议的AF_INET & AF_PACKET家族)。为了帮助调试,我需要以编程方式显示这些套接字的详细信息(例如,在这些套接字上排队的字节/数据包的数量)。

我尝试使用带有MSG_PEEK标志的FIONREAD和recv,但这两种方法都只给出了在套接字中排队的第一个数据包的字节数。

因此,我似乎需要读取"/proc/PID/net/raw“文件才能获得所需的详细信息。Q1:有更好的方法吗?

Linux内核只将AF_INET家族的套接字添加到其原始套接字哈希表中,而不添加AF_PACKET家族的套接字。因此,"/proc/PID/net/raw“文件中只列出了AF_INET家族的套接字。Q2:有没有办法了解AF_PACKET家族的套接字的详细信息?

通过读取"/proc/PID/net/raw“文件,我可以获得内核的发送和接收队列中的字节数。Q3:我能以某种方式得到排队的数据包的数量吗?

任何帮助都将不胜感激。

p.s:我的程序是C语言的,但是我也很乐意看其他语言的代码片段。

EN

回答 1

Stack Overflow用户

发布于 2013-05-05 09:29:12

这是对问题2的答复。

不,不可能获得AF_PACKET系列的套接字的详细信息(至少不能通过Linux内核获得)。这是因为对于AF_PACKET系列的套接字,内核中的整个协议栈被跳过,数据包直接传递给创建套接字的用户空间应用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12742641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档