我正在尝试打开原始套接字并将无线接口绑定到它。这是我正在使用的代码:
//opening socket
if ((sockfd = socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL))) == -1){
//if socket fails give error
perror("socket");
}
//binding socket to interface
if (setsockopt(sockfd, SOL_SOCKET, SO_BINDTODEVICE, "wlp0s19f2u3", 4) < 0)
perror("SIOCGIFHWBIND");
但是在使用sudo 编译和运行时,我得到了一个“SIOCGIFHWBIND:没有这样的设备”。
我首先想到这是因为我错过拼写接口名称,但我的iwconfig输出是:
wlp0s19f2u3 IEEE 802.11 Mode:Monitor Frequency:2.462 GHz Tx-Power=20 dBm
并且它不是监控模式的问题,因为在我的无线网卡处于托管模式时运行代码会提供相同的输出,我需要接口处于监控模式。
请帮忙,祝你有愉快的一天!
答案 0 :(得分:2)
感谢Mark Setchell,结果显示4是来自示例代码,他们使用了类似“eth0”的东西,它有4个字符。所以用你的界面的strlen()取代4效果很好。再次感谢。