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请求,解析请求,处理请求,然后像客户端回 ...
随机推荐
- 计算器(delphi)
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms ...
- dom树的介绍,及原理分析
三.解析和DOM树的构建 1.解析: 由于解析渲染引擎是一个非常重要的过程,我们将会一步步的深入,现在让我们来介绍解析. 解析一个文档,意味着把它转换为一个有意义的结构——代码可以了解和使用的东西,解 ...
- UltraEdit 列模式
使用UltraEdit 列模式 1 进入UltraEdit列模式 a) 通过快捷方式 Alt +c b) UltraEdit --> Column Mode
- 使用tolua++编译pkg,从而创建自定义类让Lua脚本使用
步骤一:首先自定义类(这里Himi自定义类名 “MySprite”) MySprite.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 // // ...
- 【BZOJ2049】 [Sdoi2008]Cave 洞穴勘测
Description 辉辉热衷于洞穴勘测.某天,他按照地图来到了一片被标记为JSZX的洞穴群地区.经过初步勘测,辉辉发现这片区域由n个洞穴(分别编号为1到n)以及若干通道组成,并且每条通道连接了恰好 ...
- Linux与Windows中动态链接库的分析与对比
摘要:动态链接库技术实现和设计程序常用的技术,在Windows和Linux系统中都有动态库的概念,采用动态库可以有效的减少程序大小,节省空间,提高效率,增加程序的可扩展性,便于模块化管理.但不同操作系 ...
- csu 1312 榜单(模拟题)
http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1312 1312: 榜单 Time Limit: 1 Sec Memory Limit: 128 ...
- Linux计算机进程地址空间与内核装载ELF
本文基于Linux™系统对进程创建与加载进行分析,文中实现了Linux库函数fork.exec,剖析内核态执行过程,并进一步展示进程创建过程中进程控制块字段变化信息及ELF文件加载过程. 一.初识Li ...
- 盒模型------CSS
盒子的内心世界 1.模型 通过CSS的眼睛 在CSS看来,HTML的所有元素都被看成了盒子:段落,标题,块引用,列表,列表项等.甚至内联元素. 盒子的组成 内容区(content):包含内容(文本或图 ...
- 设置UINavigation的背景图片和背景颜色
//通过背景图片来设置背景 float systemVersion = [[[UIDevice currentDevice] systemVersion] floatValue]; UIImage * ...