如何解决从套接字读取缺少字节?
我正在编写在监视器模式下从无线接口读取套接字的程序。 问题是有时无法从read()函数接收到完整的数据包。 收到的数据包没有radiotap标头,它从MAC帧中的地址字段开始。 请检查我的代码是否正确。
打开插座:
printf("create socket\n");
if ((s = socket(PF_PACKET,SOCK_RAW,htons(ETH_P_ALL))) < 0)
{
fprintf(stderr,"socket(PF_PACKET) Failed");
return 0;
}
绑定(未显示)
从套接字读取:
FILE* destFile;
for(int i = 0;i < 16;++i){
//read
unsigned char tmpbuf[4096];
int count = 4096;
int caplen = read(s,tmpbuf,count);
//write
char str[100];
sprintf(str,"%d.bin",i);
destFile = fopen(str,"wb");
fwrite(tmpbuf,1,caplen,destFile);
//printf("%d\n",caplen);
fclose(destFile);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。