tianbisifang 2022-09-04 17:38 采纳率: 50%
浏览 68
已结题

Linux CAN通信socketcan,如读取缓冲区待读取数据的长度

socketcan如何读取接收缓冲区内的待读取数据的长度?我想到的如下方法也不行ioctl(sockfd,FIONREAD,&bytes_length),这个函数返回的数据长度bytes_length值一直为0,为啥呢?

  • 写回答

2条回答 默认 最新

  • 玉古云投 2022-09-04 20:06
    关注

    read的返回值中可以获得大小,read结束之前你是没法知道对方到底发多少给你的。通常的做法,我们会在通讯的报文前加上一些控制信息,比如前4个byte存放数据大小(是否包含这4个byte自己定义)、数据是否分片、每片大小、MAC、控制字符(防止其他程序误发)等等。
    供参考。

    评论

报告相同问题?

问题事件

  • 系统已结题 9月12日
  • 创建了问题 9月4日