请教Linux网络编程高手,网络编程时碰到的若干问题,如何在IP包或广播包接收客户端上计算接收到的IP包长等

(1)我想在数据接收客户端上计算接收到的IP包或者广播包的长度,数据包内容的类型包括多种,字符型、整形等,strlen只能检测字符型,其他类型的话,该怎么计算长度呢?Li... (1)我想在数据接收客户端上计算接收到的IP包或者广播包的长度,数据包内容的类型包括多种,字符型、整形等,strlen只能检测字符型,其他类型的话,该怎么计算长度呢?Linux网络编程里有没有其他特定的函数可以调用?
(2)能不能分别在数据链路层、网络层和传输层去取Ip数据包或者广播包,取包调用的调用函数分别是什么?
跪求,万分感谢~
展开
 我来答
gis19831203
2011-10-08 · TA获得超过690个赞
知道小有建树答主
回答量:914
采纳率:0%
帮助的人:835万
展开全部
同一楼上的,IP包头有长度字段,你把它提取出来就可以了。
另外,在链路层和网络层可以取到ip数据包,在传输层是没有办法取到IP头之类信息的。
在链路层需要使用libpcap(windows下为winpcap)包进行开发
在网络层可以使用原始套接字进行开发。
追问
广播数据包也一样吗?
追答
一样的
Ash_Mood
2011-10-08
知道答主
回答量:8
采纳率:0%
帮助的人:5.8万
展开全部
要检测包的长度,不是靠strlen计算的,是在包里已经有选项的了,你要看一下协议的C代码,里面有struct,好象ip协议里标识包的长度是在第3、第4字节吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式