Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Network programming 从nfq获取数据\u获取\u有效负载_Network Programming_Packet_Packet Capture_Packets_Netfilter - Fatal编程技术网

Network programming 从nfq获取数据\u获取\u有效负载

Network programming 从nfq获取数据\u获取\u有效负载,network-programming,packet,packet-capture,packets,netfilter,Network Programming,Packet,Packet Capture,Packets,Netfilter,当我使用'nfq_get_payload(nfqData和data);'然后打印“数据”,我得到的都是E,我还应该做些什么来获取有效载荷 ret = nfq_get_payload(nfqData, &data); if (ret >= 0) printf("payload_len=%d \nPayload: %s", ret, data); 数据参数的类型为char**,在本例中,我们可以将其视为指向字符列表的指针。该调用将数据设

当我使用'nfq_get_payload(nfqData和data);'然后打印“数据”,我得到的都是E,我还应该做些什么来获取有效载荷

        ret = nfq_get_payload(nfqData, &data);
    if (ret >= 0)
            printf("payload_len=%d \nPayload: %s", ret, data);

数据参数的类型为char**,在本例中,我们可以将其视为指向字符列表的指针。该调用将数据设置为数据包的字符列表。但是,即使“c字符串”也是char*类型,此处返回的数据也不是c字符串,因为它具有嵌入的空值。如果您尝试使用%s打印它,您将只获得第一个空值的数据

我打赌你得到的是IP数据包,因为a的第一个字节几乎总是0x45,在ASCII中是字母“E”。如果后跟TOS字段,则该字段几乎总是0或NULL。这个0x45,0x00是一个有效的c字符串,这就是为什么要得到一个E

您确实希望使用返回值ret作为循环计数器并打印数据包的每个字节:

for (int i = 0; i < ret; i++) {
   printf(" 0x%1X ", data[i] );
}
for(int i=0;i

查看打印缓冲区的讨论。

数据参数的类型为char**,在本例中,我们可以将其视为指向char列表的指针。该调用将数据设置为数据包的字符列表。但是,即使“c字符串”也是char*类型,此处返回的数据也不是c字符串,因为它具有嵌入的空值。如果您尝试使用%s打印它,您将只获得第一个空值的数据

我打赌你得到的是IP数据包,因为a的第一个字节几乎总是0x45,在ASCII中是字母“E”。如果后跟TOS字段,则该字段几乎总是0或NULL。这个0x45,0x00是一个有效的c字符串,这就是为什么要得到一个E

您确实希望使用返回值ret作为循环计数器并打印数据包的每个字节:

for (int i = 0; i < ret; i++) {
   printf(" 0x%1X ", data[i] );
}
for(int i=0;i
有关打印缓冲区的讨论,请参阅