从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);
答案 0 :(得分:0)
如果您有UDP数据报,可以从其标题中获取其大小。
例如,如果你有一个指针 char * hdr 到UDP数据报头,你可以通过这样的结构得到它的长度
int length = *(int *)(hdr + 4);
的更多信息