两个板子 CAN 口直连
一个板子 运行 ./server
另一个板子运行 ./client
即可看到运行结果
附上服务器和客户端的测试程序
Server 程序
#include <sys/ioctl.h>
#include <net/if.h>
#include <linux/can.h>
#ifndef PF_CAN
#define PF_CAN 29
#endif
#ifndef AF_CAN
#define AF_CAN PF_CAN
#endif
int main()
{
int s;
unsigned long nbytes,len;
struct sockaddr_can addr;
struct ifreq ifr;
struct can_frame frame;
s = socket(PF_CAN,SOCK_RAW,CAN_RAW);
strcpy(ifr.ifr_name,"can0");
ioctl(s,SIOCGIFINDEX,&ifr);
printf("can0 can_ifindex = %x",ifr.ifr_ifindex);
//bind to all enabled can interface
addr.can_family = AF_CAN;
addr.can_ifindex =0;
bind(s,(struct sockaddr*)&addr,sizeof(addr));
nbytes = recvfrom(s,&frame,sizeof(struct can_frame),0,(struct sockaddr *)&addr,&len);