微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从套接字读取缺少字节?

如何解决从套接字读取缺少字节?

我正在编写在监视器模式下从无线接口读取套接字的程序。 问题是有时无法从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 举报,一经查实,本站将立刻删除。