Linux SocketCan client server demo hacking
- /***********************************************************************
- * Linux SocketCan client server demo hacking
- * 说明:
- * 本文主要是解读Linux上的SocketCan的基本使用方法,内容和Linux上的
- * 网络编程差不多。
- *
- * 2016-3-28 深圳 南山平山村 曾剑锋
- **********************************************************************/
- 一、cat client.c
- #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;
- struct sockaddr_can addr;
- struct ifreq ifr;
- struct can_frame frame;
- // 创建一个SocketCan
- s = socket(PF_CAN,SOCK_RAW,CAN_RAW);
- // 设置一些参数,这个是使用的can网络的设备号
- strcpy((char *)(ifr.ifr_name),"can0");
- ioctl(s,SIOCGIFINDEX,&ifr);
- printf("can0 can_ifindex = %x\n",ifr.ifr_ifindex);
- // 设置使用CAN协议
- addr.can_family = AF_CAN;
- addr.can_ifindex = ifr.ifr_ifindex;
- bind(s,(struct sockaddr*)&addr,sizeof(addr));
- // 设置发送到的设备id
- frame.can_id = 0x123;
- strcpy((char *)frame.data,"hello");
- frame.can_dlc = strlen(frame.data);
- printf("Send a CAN frame from interface %s\n",ifr.ifr_name);
- // 发送数据
- nbytes = sendto(s,&frame,sizeof(struct can_frame),,(struct sockaddr*)&addr,sizeof(addr));
- return ;
- }
- 二、cat server.c
- #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;
- // 创建一个SocketCan
- s = socket(PF_CAN,SOCK_RAW,CAN_RAW);
- // 指定使用的Can网络
- strcpy(ifr.ifr_name,"can0");
- ioctl(s,SIOCGIFINDEX,&ifr);
- printf("can0 can_ifindex = %x\n",ifr.ifr_ifindex);
- // 指定使用的协议,并绑定
- //bind to all enabled can interface
- addr.can_family = AF_CAN;
- addr.can_ifindex =;
- bind(s,(struct sockaddr*)&addr,sizeof(addr));
- // 获取数据
- nbytes = recvfrom(s,&frame,sizeof(struct can_frame),,(struct sockaddr *)&addr,&len);
- /*get interface name of the received CAN frame*/
- ifr.ifr_ifindex = addr.can_ifindex;
- ioctl(s,SIOCGIFNAME,&ifr);
- printf("Received a CAN frame from interface %s\n",ifr.ifr_name);
- printf("frame message\n"
- "--can_id = %x\n"
- "--can_dlc = %x\n"
- "--data = %s\n",frame.can_id,frame.can_dlc,frame.data);
- return ;
- }
Linux SocketCan client server demo hacking的更多相关文章
- am335x Qt SocketCAN Demo hacking
/*********************************************************************************** * am335x Qt Soc ...
- linux watchdog demo hacking
/********************************************************************** * linux watchdog demo hackin ...
- linux SPI bus demo hacking
/********************************************************************** * linux SPI bus demo hacking ...
- Linux socket program Demo1(client & server)
client and server Demo of socket. client send data to server. server send data to client. // this ...
- C Socket Programming for Linux with a Server and Client Example Code
Typically two processes communicate with each other on a single system through one of the following ...
- 深入浅出 Redis client/server交互流程
综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文章都断断续续的非系统性的,不能给读者此交互流程的整体把握.所以这里我 ...
- Network client/server
<Beginning Linux Programming_4th> chapter 15 Sockets 1 A simple local client/server 1) clie ...
- Linux 搭建SVN server
一. SVN 简单介绍 Subversion(SVN) 是一个开源的版本号控制系統, 也就是说 Subversion 管理着随时间改变的数据. 这些数据放置在一个中央资料档案库 (repository ...
- Linux下HTTP Server
想在Linux下实现一个简单的web Server并不难.一个最简单的HTTP Server不过是一个高级的文件服务器,不断地接收客户端(浏览器)发送的HTTP请求,解析请求,处理请求,然后像客户端回 ...
随机推荐
- Oracle中SAVEPOINT和ROLLBACK用法
savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...
- sybase下convert函数第三个参数(时间格式)
convert(varchar(10),字段名,转换格式) 比如:1.select user_id,convert(varchar(10),dayts,11) as dates from tb_use ...
- 在虚拟中开启Windows 8.1的Hyper-V平台
VM安装windows8开启Hype-V 今天老魏用VM安装了Windows8.1系统,想用此系统来开发一下Windows Phone8,但是要求确实要开启Hyper-V平台技术,本来是没有任何的问题 ...
- Xcode常用快捷键及代码格式刷(缩进)方法-b
Xcode版本:4.5.1 一.总结的常用命令: 隐藏xcode command+h 退出xcode command+q 关闭窗口 command+w 关闭所有窗口 command+option+w ...
- NSUserDefault 的使用(好东东,留着)
1.NSUserDefault的使用: 作用:NSUserDefaults类提供了一个与默认系统进行交互的编程接口.NSUserDefaults对象是用来保存,恢复应用程序相关的偏好设置,配置数据等等 ...
- 1074: [SCOI2007]折纸origami - BZOJ
Description 桌上有一张边界平行于坐标轴的正方形纸片,左下角的坐标为(0,0),右上角的坐标为(100,100).接下来执行n条折纸命令.每条命令用两个不同点P1(x1,y1)和P2(x2, ...
- c++ string char* const char*
#include <iostream> #include <string> #include <cstring> using namespace std; int ...
- ural 1108
大数乘法 不会java 比赛的时候各种细节RE WA ........ #include <cstdio> #include <cstring> #include ...
- ppshu
全部书籍已经下载完毕! http://3cvpkfx4gdnkcduj.onion/ https://3cvpkfx4gdnkcduj.onion.cab/ https://3cvpkfx4gdnkc ...
- Samza的ApplicationMaster
当Samza ApplicationMaster启动时,它做以下的事情: 通过STREAMING_CONFIG环境变量从YARN获取配置信息(configuration) 在随机端口上 启动一个JMX ...