- 博客(60)
- 收藏
- 关注
转载 记录几个经典的字符串hash算法
记录几个经典的字符串hash算法,方便以后查看:推荐一篇文章:http://www.partow.net/programming/hashfunctions/#(1)暴雪字符串hash 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> ...
2017-04-25 14:47:00 327
转载 linux 获取网络状态信息(Rtnetlink)
一、Rtnetlink Rtnetlink 允许对内核路由表进行读和更改,它用于内核与各个子系统之间(路由子系统、IP地址、链接参数等)的通信,用户空间可以通过NET_LINK_ROUTER socket 与内核进行通信,该过程基于标准的netlink消息进行。 注:netlink用法在上一篇博文中有提到http://www.cnblogs.com/wenqiang/p...
2017-03-28 14:28:00 391
转载 linux netlink通信机制
一、什么是Netlink通信机制 Netlink套接字是用以实现用户进程与内核进程通信的一种特殊的进程间通信(IPC) ,也是网络应用程序与内核通信的最常用的接口。 Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在Linux 内核中 使用netlink 进行应用与内核通信的应...
2017-01-20 17:32:00 233
转载 linux进程、线程与cpu的亲和性(affinity)
最近的工作中对性能的要求比较高,下面简单做一下总结:一、什么是cpu亲和性(affinity) CPU的亲和性,就是进程要在指定的 CPU 上尽量长时间地运行而不被迁移到其他处理器,也称为CPU关联性;再简单的点的描述就将制定的进程或线程绑定到相应的cpu上;在多核运行的机器上,每个CPU本身自己会有缓存,缓存着进程使用的信息,而进程可能会被OS调度到其他CPU上,如此,CP...
2016-11-17 17:39:00 279
转载 C语言检查ip是否合法
在工作当中我们经常会遇到这种问题:判断一个输入的字符串是否为合法的IP地址,下面是一个测试小程序: 1 #include <stdio.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <stdbool.h> 5 6 bool isVaildIp...
2016-10-14 14:41:00 324
转载 使用libpcap获取http报文
在上一篇博客中简单对libpcap库基本函数及基本工作流程做了些简单说明,今天我们先了解一下pcap_loop()及pcap_dispatch()函数的功能及作用:(1)pcap_loop()循环进行数据包的抓取:函数原型如下: 1 typedef void (*pcap_handler)(u_char *user, const struct pcap_...
2016-08-15 16:09:00 652
转载 使用libpcap过滤arp
上一篇博客简单讲述了libpcap的工作流程及简单使用,今天我们需要做的是继续使用libpcap抓取我们感兴趣的流量,并进行简单的解析:测试环境是centos 7下面贴一张arp帧结构图:下面我们实现的是通过pcap过滤抓取arp报文,解析其中的Ethernet address 和proctocal address并打印出来分析是arp request还是reply,...
2016-07-29 13:15:00 285
转载 初识函数库libpcap
由于工作上的需要,最近简单学习了抓包函数库libpcap,顺便记下笔记,方便以后查看一、libpcap简介 libpcap(Packet Capture Library),即数据包捕获函数库,是Unix/Linux平台下的网络数据包捕获函数库。它是一个独立于系统的用户层包捕获的API接口,为底层网络监测提供了一个可移植的框架.Libpcap可以在绝大多数类unix平台下工作,l...
2016-07-27 17:36:00 160
转载 HTTP协议GET HEAD简单介绍
一、HTTP协议简介 超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层协议,自 1990 年起,HTTP 就已经被应用于 WWW 全球信息服务系统。 HTTP 是一种请求/响应式的协议。一个客户机与服务器建立连接后,发送一个请求给服务器;服务器接到请求后,给予相应的响应信息。 HTTP 的第一版本 HTTP/0.9是一种简单的用...
2016-07-23 16:16:00 141
转载 linux几种时间函数总结
一、linux时间函数总结 最近的工作中用到的时间函数比较频繁,今天抽时间总结一下,在linux下,常用的获取时间的函数有如下几个: asctime, ctime, gmtime, localtime, gettimeofday , mktime, asctime_r, ctime_r, gmtime_r, localtime_r二、常用的结构体(1)str...
2016-07-17 15:07:00 447
转载 linux几种定时函数的使用
Linux定时函数介绍: 在程序开发过程中,我们时不时要用到一些定时器,通常如果时间精度要求不高,可以使用sleep,uslepp函数让进程睡眠一段时间来实现定时,前者单位为秒(s),后者为微妙(us);但有时候我们又不想让进程睡眠阻塞在哪儿,我们需要进程正常执行,当到达规定的时间时再去执行相应的操作,在linux下面我们一般使用alarm函数跟setitimer函数来实现...
2016-05-25 22:17:00 143
转载 linux下redis数据库的简单使用
一、redis简介 Redis是一个key-value存储系统。和 Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持lists(链表)、 sets(集合)和zsets(有序集合)几种数据类型。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作, 而且这些操作都是原子性的...
2016-05-23 23:03:00 434
转载 网络编程之非阻塞connect编写
一、connect非阻塞编写 TCP连接的建立涉及到一个三次握手的过程,且socket中connect函数需要一直等到客户接收到对于自己的SYN的ACK为止才返回,这意味着每 个connect函数总会阻塞其调用进程至少一个到服务器的RTT时间,而RTT波动范围很大,从局域网的几个毫秒到几百个毫秒甚至广域网上的几秒。这段 时间内,我们可以执行其他处理工作,以便做到并行。在此,...
2016-05-20 13:28:00 137
转载 网络编程之select
一、select函数简介 select一般用在socket网络编程中,在网络编程的过程中,经常会遇到许多阻塞的函数,网络编程时使用的recv, recvfrom、connect函数都是阻塞的函数,当函数不能成功执行的时候,程序就会一直阻塞在这里,无法执行下面的代码。这是就需要用到非阻塞的编程方式,使用 selcet函数就可以实现非阻塞编程。selcet函数是一个轮循函数,即当循环询...
2016-05-19 21:24:00 166
转载 数码相框(LCD、I2C)
一:项目介绍 该项目最终实现的功能很简单,手指在触摸屏左滑(下一张图片),右滑(上一张图片) 1.1软硬件资源 硬件:pc机,ARM Cortex-A9开发板 软件:linux 操作系统 1.3项目流程 本项目主要分为三大模块: 一:LCD驱动编写 二:I2C驱动编写 三:使用I2C读取触摸屏上的数据,...
2016-05-18 21:33:00 750
转载 centos tftp和samba的安装与配置
Tftp服务器的安装于配置1 安装: 命令:#yum –y install tftp2 安装完毕之后,将tftp服务器设置为开机启动,方法:(命令)#setup→选择system server→选中tftp选项。3 输入命令(#netstat -a | grep tftp 检查tftp是否已经启动)4 配置:命令:#gedit /etc/xinted.d/tftp...
2016-04-20 09:10:00 100
转载 libevent库简单使用
一、libevent库简介Libevent是一个用于开发可扩展性网络服务器的基于事件驱动(event-driven)模型的网络库。Libevent有几个显著的亮点:(1)事件驱动(event-driven),高性能;(2)轻量级,专注于网络,不如 ACE 那么臃肿庞大;(3)源代码相当精炼、易读;(4)跨平台,支持 Windows、Linux、*BSD和 Mac Os;(5)...
2016-04-18 13:29:00 100
转载 c语言随机数
一、产生一个C语言随机数需要用到以下函数1 #include <stdlib.h>2 3 int rand(void); //返回一个随机数,范围在0~RAND_MAX之间4 5 void srand(unsigned int seed); //用来设置rand()产生随机数时的随机数种子rand函数返回一个随机数,范围在0~到RAND_MAX...
2016-04-18 11:43:00 105
转载 shell 中的for、while循环及if语句
shell与其他语言一样也支持for、while循环for循环的一般格式如下: 1 #!/bin/sh 2 3 for 变量 in 列表 4 do 5 command 1 6 command 2 7 command 1 8 ......... 9 command n10 done列表是一组值...
2016-04-04 16:34:00 187
转载 shell 常用命令语法简介
一、grep用法**************************************++++++用一些特殊的函数来处理参数++++++*$# 传递给函数的参数个数*$* 显示所有传递给函数的参数*$@ 与$*相同但略有不同*$? 函数的返回值**************************************1、grep一般格式grep...
2016-04-04 15:07:00 100
转载 Tiny4412 烧写uboot到emmc步骤
将uboot写入emmc,并通过EMMC驱动,不在只用SD卡启动烧写uboot的之前用如下命令查看EMMC卡信息及分区信息:mmcinfo 0: 查看mmc卡信息, 0表示SD卡;1表示emmc卡fdisk -p 0: 查看mmc卡分区信息1、格式化emmc卡:fdisk -c 320 809 524 :可参考前面查看的信息格式化fatformat mmc...
2016-04-04 15:06:00 397
转载 wireshark过滤规则
正如您在Wireshark教程第一部分看到的一样,安装、运行Wireshark并开始分析网络是非常简单的。使用Wireshark时最常见的问题,是当您使用默认设置时,会得到大量冗余信息,以至于很难找到自己需要的部分。这就是为什么过滤器会如此重要。它们可以帮助我们在庞杂的结果中迅速找到我们需要的信息。捕捉过滤器:用于决定将什么样的信息记录在捕捉结果中。需要在开始捕捉前设置。显示过滤器...
2016-04-04 14:32:00 105
转载 capwap学习笔记——初识capwap(五)(转)
3. CAPWAP Binding for IEEE 802.11¢ CAPWAP协议本身并不包括任何指定的无线技术。它依靠绑定协议来扩展对特定无线技术的支持。¢ RFC5416就是用来扩展CAPWAP对IEEE 802.11网络的支持。其中定义了控制消息字段,新的控制消息,消息元素。¢ 注意,这个协议仅支持IEEE 802.11-2007规范,并不支持IEEE 802.11...
2016-01-11 12:44:00 163
转载 capwap学习笔记——初识capwap(四)(转)
2.5.7 CAPWAP传输机制WTP和AC之间使用标准的UDP客户端/服务器模式来建立通讯。CAPWAP协议支持UDP和UDP-Lite [RFC3828]。¢ 在IPv4上,CAPWAP控制和数据通道使用UDP。此时CAPWAP报文中的UDP校验和必须设置为0。AC上的CAPWAP控制报文端口为UDP众所周知端口5246,数据报文端口为UDP众所周知端口5247 ,WTP...
2016-01-11 12:43:00 211
转载 capwap学习笔记——初识capwap(三)(下)
2.5.6.25 Image Data to ResetWTP下载image后重启,重新设置DTLS连接¢WTP:ü当image的下载完成,或者ImageDataStartTimer定时器超时,WTP进入reset状态。ü接收到一个来自AC的Image Data Response message消息的时候转入这个状态。¢AC:当image传输...
2016-01-11 12:42:00 314
转载 capwap学习笔记——初识capwap(三)(转)
2.5.6 CAPWAP状态机详解2.5.6.1 Start to Idle这个状态变迁发生在设备初始化完成。¢WTP:开启CAPWAP状态机。¢AC:开启CAPWAP状态机。2.5.6.2 Idle to Discovery这个状态变迁发生是为了支持CAPWAP发现进程。¢WTP:WTP进入发现状态是为了优先去传...
2016-01-11 12:41:00 133
转载 capwap学习笔记——初识capwap(二)(转)
2.5.1 AC发现机制WTP使用AC发现机制来得知哪些AC是可用的,决定最佳的AC来建立CAPWAP连接。WTP的发现过程是可选的。如果在WTP上静态配置了AC,那么WTP并不需要完成AC的发现过程。WTP首先发送一个Discovery Request message给受限的广播地址,或者CAPWAP的多播地址(224.0.1.140),或者是预配置的AC...
2016-01-11 12:38:00 125
转载 capwap学习笔记——初识capwap(一)(转)
初识CAPWAP2.1 CAPWAP简介CAPWAP——Control And Provisioning of Wireless Access Points Protocol Specification。其由两个部分组成:CAPWAP协议和无线BINDING协议。前者是一个通用的隧道协议,完成AP发现AC等基本协议功能,和具体的无线接入技术...
2016-01-11 12:37:00 208
转载 capwap学习笔记——capwap的前世今生(转)
1 capwap的前世今生1.1 胖AP、瘦AP、AC传统的WLAN网络都是为企业或家庭内少量移动用户的接入而组建的。因此,只需要一个无线路由器就可以搞定了,就好像现在家用的无线路由器就是胖AP。胖 AP将WLAN的物理层、用户数据加密、用户认证、QoS、网络管理、漫游技术以及其他应用层的功能集于一身,功能全,结构复杂。随着无线网络的发展,现在需要部署无线设备的地方越来越多,...
2016-01-11 11:49:00 73
转载 Linux获取网络接口信息
linux获取网络接口信息需要用到的函数为ioctl(),结构体struct ifreq,struct ifconf1.ioctl()函数原型及作用1 #include <sys/ioctl.h>2 3 int ioctl(int d, int request, ...);4 5 //参数6 //int d:是一个文件描述符7 //int...
2015-12-17 21:02:00 574
转载 Tiny4412之串口(Uart)驱动编写
一:tiny4412串口驱动编写 1、串口通信简介 串口通信指串口按位(bit)发送和接收字节,串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线 接收数据。它很简单并且能够实现远距离通信。比如IEEE488定义并行通行状态时,规定设备线总长不得超过20米,并且任意两个设备间的长度不...
2015-11-22 22:19:00 528
转载 Tiny4412之重力感应器驱动
一:Tiny4412 裸板重力感应驱动编写 整个编写过程大概分为如下几步: (1)在底板上找到重力感应器的所在位置,找到芯片型号(我用的板子上重力感应器芯片型号为:MMA7660FC) (2)通过型号查看重力感应器电路图,了解每个引脚的功能 (3)找到引脚对应的网标(EINT,SDL,SCL)配置其相应的gpio口 (4)配置芯片相关寄存器 (5)使用...
2015-11-12 15:24:00 393
转载 CentOS6.5系统挂载NTFS分区的硬盘
下载rpmforge,下载对应的版本,就是对应CentOS版本,还有32位与64位也要对应上。rpmforge拥有4000多种CentOS的软件包,被CentOS社区认为是最安全也是最稳定的一个软件仓库.下载地址“http://pkgs.repoforge.org/rpmforge-release/”我下载的版本是“rpmforge-release-0.5.3-1.e...
2015-10-26 22:32:00 87
转载 S3C6410板子移植 Android2.2
一:Android简介1.什么是Android:Android是一种基于linux的自由及开放源代码的操作系统,主要适用于移动设备,如智能手机和平板电脑,是由google公司和开放手机联盟领导和开发;Android的系统架构和其操作系统一样,采用了分层的架构从架构图看,Android分为四个层:从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。...
2015-10-25 12:58:00 139
转载 linux设备驱动之字符设备驱动模型(2)
在上一篇中我们已经了解了字符设备驱动的原理,也了解了应用层调用内核函数的机制,但是我们每次操作设备,都必须首先通过mknod命令创建一个设备文件名,比如说我们要打开u盘,硬盘等这些设备,难道我们还要自己创建,就如同刘老师常说的一句话,这也太山寨了吧,所以我们今天我们来点比较专业的,让函数帮我们自动创建; 在Linux 下,设备和驱动通常都需要挂接在一种总线上,总线有PCI、US...
2015-09-12 20:09:00 84
转载 linux设备驱动之字符设备驱动模型(1)
一:字符设备驱动 在linux下面,应用层看到的一切皆为文件(名字)所有的设备都是文件,都可以调用open,read,write来操作,而在内核中每个中每个设备有唯一的对应一个设备号; APP (名字) OS (设备号) HW 下面我们写一个简...
2015-09-12 16:15:00 70
转载 linux内核中断之看门狗
一:内核中断 linux内核中的看门狗中断跟之前的裸板的中断差不多,在编写驱动之前,需要线把内核自带的watch dog模块裁剪掉,要不然会出现错误;在Device Drivers /Watchdog Timer Support /S3C2410 Watchdo在内核中,我们处理一个中断,必须先注册一个中断号,注册中断的函数是:132 request_irq(u...
2015-09-12 14:59:00 439
转载 linux模块驱动之led(ioremap)
一:led内核驱动 (1)在编写led内核驱动时,我们首先要进行内核裁剪,因为友善之臂将LED灯的驱动默认加载到内核中,所以编写模块驱动程序前就要先把原先的LED灯驱动裁剪掉; led驱动在源码里面的Device Drivers /Character devices目录下,进行完裁剪之后重新编译linux源码; (2)ioremap() define...
2015-09-12 13:56:00 141
转载 linux内核裁剪及编译可加载模块
一:linux内核裁剪: 1:编译内核源码: 今天的重点内容是内核驱动的编写,在编写驱动之前首先的了解linux内核源码,linux主要是由五个子系统组成:进程调度,内存管理,文件系统,网络接口以及进程间通信;下面是解压的linux内核源码文件: 下面对linux内核里面的文件进行简单的说明: arch目录中包含于体系结构有关的子目录和文件,arm的相关平...
2015-09-12 11:27:00 183
转载 linux内核堆栈
一:进程的堆栈 内核在创建进程的时候,在创建task_struct的同时会为进程创建相应的堆栈。每个进程会有两个栈,一个用户栈,存在于用户空间,一个内核栈,存 在于内核空间。当进程在用户空间运行时,cpu堆栈指针寄存器里面的内容是用户堆栈地址,使用用户栈;当进程在内核空间时,cpu堆栈指针寄存器里面的内 容是内核栈空间地址,使用内核栈。 内核为每个进程分配task_str...
2015-09-12 10:18:00 146
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人