[英]how to calculate udp packet size libpcap
从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);
如果您有UDP数据报,则可以从其报头中获取其大小。
例如,如果您有一个指向UDP数据报头的char * hdr指针,则可以通过这样的构造来获取其长度
int length = *(int *)(hdr + 4);
有关UDP的更多信息http://en.wikipedia.org/wiki/User_Datagram_Protocol
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.