【发布时间】:2011-02-05 09:03:53
【问题描述】:
我在 linux (centos) 上使用 C 语言中的 libpcap,我正在关注 this guide 我想简单地在 ascii 中打印出整个数据包,并且我设法通过将其转换为 u_char* 来使其工作在“my_callback”函数中。但我不知道如何获取数据的长度。 strstr 没有工作。标头有一个 len 成员,您可以访问它以获取大小,但我找不到与传递的 *packet 类似的任何东西。任何帮助表示赞赏。
【问题讨论】:
-
因为我不知道,所以我不会将其作为答案发布......但从标题中的一些注释中可以看出,caplen 成员将是数据的长度。
-
数据包不会是 ASCII,因此将所有数据字节视为 ASCII 字符串是行不通的;特别是,在上面使用
strstr()是个坏主意。阅读该指南中的代码,它将数据包数据处理为二进制数据。爱因斯坦的答案是正确的;使用struct pcap_pkthdr的caplen字段作为包数据的字节数。