0

Linux OS から、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;
...
}

に 4 を追加する必要がありsize_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 に答える