2011-02-01 82 views
0

我想要做什麼:在用戶空間中實現第2層協議。如何在wlan上發送/接收第2層幀

所以我使用的是Linux的PCAP 2.6.32下嗅探包:

... 
    struct pcap_t *pcap_h = pcap_open_live("wlan0", BUFSIZ, 1, 0, errbuf); 
    ... 
    while (1) { 
      int ret = pcap_loop(pcap_h, -1, newpkt_callback, NULL); 
      ... 
    } 
    ... 

這工作得很好,所有數據包。但是,當我使用PCAP與沒有ether_head並沒有IP報頭髮送數據包:

const char pkt[] = "WHATEVER"; 
    nsent = pcap_sendpacket(pcap_h, (const u_char *)pkt, len); 
    ... 

我只能嗅出localhost上的分組,而不是在運行同一程序的其他筆記本電腦。所以問題是「我如何在沒有ether_head的情況下在wlan上廣播消息」?任何指針將不勝感激。

回答

1

如果您使用的是接入點(基礎架構模式),則無法執行此操作,因爲接入點會在其他無線站之間中繼幀,因此必須知道如何與您的第2層協議交談。

我建議在第3層實現你的協議(你可能想看看PF_PACKET套接字)。

+0

我確實嘗試過使用原始套接字和PF_PACKET,但問題仍然存在。至於AP,協議的要點是不使用接入點。換句話說,我正在尋找一種簡單的方法將數據注入無線設備,並在另一端接收數據。 – Peyman 2011-02-02 00:28:14