gpt4 book ai didi

c - 如何计算 udp 数据包大小 libpcap

转载 作者:行者123 更新时间:2023-11-30 17:57:05 24 4
gpt4 key购买 nike

在 Linux 操作系统中,我尝试用 C 或 Python 编写自己的数据使用监视器。我已经搜索和研究了几天了。目前我正在努力适应sniffex.c以满足我的需要。我已成功验证了几个 ftp session 期间发送和接收的总字节数。

在 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 数据报,您可以从其 header 获取其大小。

例如,如果您有一个指向 UDP 数据报头的指针 char *hdr,您可以通过这样的构造获取其长度

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

有关 UDP 的更多信息 http://en.wikipedia.org/wiki/User_Datagram_Protocol

关于c - 如何计算 udp 数据包大小 libpcap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13006634/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com