如何计算udp包大小libpcap

时间:2012-10-22 07:17:49

标签: c libpcap packet-sniffers

从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);

1 个答案:

答案 0 :(得分:0)

如果您有UDP数据报,可以从其标题中获取其大小。

例如,如果你有一个指针 char * hdr 到UDP数据报头,你可以通过这样的结构得到它的长度

int length = *(int *)(hdr + 4);

有关UDP http://en.wikipedia.org/wiki/User_Datagram_Protocol

的更多信息