0

从 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;
...
}

我还需要加 4size_payload吗?

此函数的回调如下所示:

/* now we can set our callback function */
pcap_loop(handle, num_packets, got_packet, NULL);
4

1 回答 1

0

如果你有一个 UDP 数据报,你可以从它的报头中得到它的大小。

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

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

更多关于 UDP http://en.wikipedia.org/wiki/User_Datagram_Protocol

于 2012-10-22T07:41:31.637 回答