如何在Linux C中使用原始套接字接收bpdu流量

时间:2014-12-21 03:48:38

标签: c linux sockets network-programming raw-sockets

如何使用recvfrom()获取数据包?如何知道它是bpdu流量? 我读了一些来源,但没有找到监听以太网流量。

int data_size, addr_size;
char reply[6000];
struct sockaddr_in addr;

addr_size = sizeof addr;
datasize = recvfrom(sock, reply, 6000, 0, &addr, &addr_size);

if(data_size<0)
{
    printf("nothing recv");
}
printf("%x",reply);

输出:

651a7ec0
这是什么?我不知道。

1 个答案:

答案 0 :(得分:0)

回复变量是指向6000字节数组的指针。当recvfrom返回时,如果使用 datasize 字节填充此数组。要查看内容,请从索引0迭代 reply ,直到 datasize

for(i=0;i<datasize;i++)
{
    printf("%02x ",reply[i]);
}

我建议将回复声明为unsinged char reply[6000]