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请求,解析请求,处理请求,然后像客户端回 ...
随机推荐
- ZOJ 1074 最大子矩阵和
Description Given a two-dimensional array of positive and negative integers, a sub-rectangle is any ...
- esp8266的STM32驱动
esp8266的STM32驱动,数据发送接收由DMA完成,释放CPU. 目前只能发送返回消息为成功或失败的AT命令,并判断是否成功,详见esp8266_cmd():其它返回消息不可预知的命令(如查看A ...
- ubuntu 设置显示器的亮度
ubuntu电脑重新启动后,亮度都变成了最亮.似乎也没胡地方可以设置.只好通过写个脚本来做这个事了. # -*- coding: utf-8 -*- import dbus bus = dbus.Se ...
- 十八、mysql 内存优化 之 myisam
.key_buffer 索引块大小 set global hot_cache.key_buffer_size = ; //设置大小 show variables like 'key_buffer_si ...
- Java Timer, TimerTask
参考:http://batitan.iteye.com/blog/253483 TimerTask 就是一个run 方法,里边有些操作: Timer 是个线程,按各种调度方法(Timer.schedu ...
- GodSon Easyui 结合Pluplaod插件的文件分割上传
自己整理了一个文件分割上传的实例,提供研究学习使用. 在线查看效果 下载该资源pluplaod文件分割上传Demo.zip 简介: 首先,进入页面会看到下面的效果: 点击一个按钮,出现如图 ...
- PD 脚本中列名注释用Name属性
操作步骤:Database=>Generate Datatabase=>Format选项卡=>勾选 Generate name in empty comment项
- 设计模式之:组合模式(Composite)
支持原创:http://blog.csdn.net/hguisu/article/details/7530783 设计模式(七)组合模式Composite(结构型) 1. 概述 在数据结构里面,树结构 ...
- 基于jquery中children()与find()的区别介绍
本篇文章介绍了,基于jquery中children()与find()的区别,需要的朋友参考下 .children(selector) 方法是返回匹配元素集合中每个元素的所有子元素(仅儿子辈).参数可选 ...
- POJ2739Sum of Consecutive Prime Numbers
http://poj.org/problem?id=2739 题意 :一个正整数能够表示为一个或多个连续素数和,给你一个正整数,让你求,有多少个这样的表示.例如:整数53有两种表示方法,5+7+11+ ...