【发布时间】:2012-10-22 07:17:49
【问题描述】:
从一个 linux 操作系统,我尝试用 C 或 python 编写我自己的数据使用监视器。我已经搜索和研究了几天。目前我正在尝试调整sniffex.c 以满足我的需求。我已经成功验证了在几个 ftp 会话期间发送和接收的总字节数。
在 sniffex.c 中计算 tcp 数据包大小。我的问题是如何计算 UDP 数据包大小?我已经搜索过这个主题,但没有找到任何东西。这个问题有意义吗?
更新:
计算数据包大小的函数如下所示:
got_packet(u_char *args, const struct pcap_pkthdr *header, const u_char *packet)
{
...
int size_payload;
...
case IPPROTO_UDP:
printf(" Protocol: UDP\n");
size_payload = header->len;
...
}
我还需要在size_payload 上加 4 吗?
此函数的回调如下所示:
/* now we can set our callback function */
pcap_loop(handle, num_packets, got_packet, NULL);
【问题讨论】:
-
这行 'size_payload = header->len;'正是您所需要的。你有头结构,所以你可以直接从这个结构中获取数据包长度。
标签: c libpcap packet-sniffers