通過無線網絡卡在資料鏈路層進行通訊

2021-05-25 02:53:26 字數 1843 閱讀 6123

通過無線網絡卡在資料鏈路層進行通訊

兩台如何能夠繞過

tcp/ip

進行通訊呢?答案就是使用

raw套接字,即原始套接字。

下面給出原始碼,分為

server

端和client端。

server

#include"stdio.h"

#include"string.h"

#include"unistd.h"

#include"sys/socket.h"

#include"netpacket/packet.h"

#include"linux/if_ether.h"

#include"sys/ioctl.h"

#include"net/if.h"

int get_iface_index(int fd, const char* inte***ce_name)

return ifr.ifr_ifindex; }

int main()

close(s); }

client

client

端需要注意的是,需要將網絡卡設為混雜模式才能夠接收到不是專門發 給它的資料,將網絡卡設為混在模式和將網絡卡退出混雜模式的函式在下面的**中都給出了。

#include"stdio.h"

#include"string.h"

#include"unistd.h"

#include"sys/socket.h"

#include"netpacket/packet.h"

#include"linux/if_ether.h"

#include"sys/ioctl.h"

#include"net/if.h"

int get_iface_index(int fd, const char* inte***ce_name)

return ifr.ifr_ifindex; }

int set_promisc(int f, char *i_name)

ifr.ifr_flags |= iff_promisc;

if    ((s = ioctl(f, siocsifflags, &ifr)) < 0)  

return 1; }

int unset_promisc(int f, char *i_name)

ifr.ifr_flags &=~ iff_promisc;

if    ((s = ioctl(f, siocsifflags, &ifr)) < 0)  

return 1;

int main()

int s;

unsigned char msg[10]="asdasdaasd";  

int n;

struct sockaddr_ll addr;

int socklen;  

s = socket(af_packet,sock_raw,htons(eth_p_all));

memset(&addr,0,sizeof(addr));

addr.sll_family = af_packet;

addr.sll_ifindex = get_iface_index(s,"ath0");

addr.sll_protocol = htons(eth_p_all);

addr.sll_halen = 6;  

int u=set_promisc(s,"ath0");    

bind(s,(struct sockaddr *)&addr,sizeof(addr));

while(1)

close(s); }

rtl8192fu無線網絡卡在Linux下打驅動

系統版本是ubuntu18.04,網絡卡型號是rtl8192fu github鏈結 碼雲 gitee 鏈結 這一步的命令 新建乙個資料夾build並進入 mkdir build cd build 如果沒有git的話先安裝 sudo apt get install git 轉殖專案 git clone...

如何通過無線網絡卡共享寬頻有線連線

先說在windows下的 1,連線有線寬頻的機器,控制面板 網路連線 本地連線 屬性 高階 在 internet 連線共享 下,選中 允許其他網路使用者通過此計算機的 internet 連線來連線 2,無線網路連線 屬性 無線網路配置 用windows配置我的無線網路設定 右下角的高階 僅計算機到計...

通過筆記本自帶的無線網絡卡開通wifi

以win8 6.2.9200.16420作業系統為範例,win 7 sp1同理 1 以管理員身份執行命令提示符 win8系統中,在新版開始選單中,右擊 顯示所有應用 找到cmd命令提示符,右擊,以管理員身份執行 即可開啟cmd命令符 快捷鍵win r 輸入cmd 回車 2 啟用並設定虛擬wifi網絡...