2014-12-21 87 views
0

如何使用recvfrom()獲取數據包?以及如何知道它是bdpu流量? 我讀了somesource,但沒有找到聽以太網通信。如何在Linux中使用原始套接字接收bpdu流量C

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 

這是什麼?我不知道。

+0

您打印的號碼是'reply'數組的地址,而不是內容。另外,如果'recvfrom'的返回值是'-1',則表示錯誤,您應該檢查'errno'。 – SSC

+0

那麼如何獲取內容 – Student

回答

0

回覆變量是指向6000字節數組的指針。當recvfrom返回時,如果用datasize字節填充此數組。要看到的內容,迭代回覆從指數0,直到命令datasize

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

我建議宣佈回覆作爲unsinged char reply[6000]