自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 lighttpd使用

之前在项目中使用的是thttpd,由于thttpd是用明文发送的,为了安全考虑,用https来代替http,增加了证书认证功能,所以最后选择了lighttpd。 lighttpd支持了cgi和fcgi,thttpd只支持了cgi,为了兼容的同时避免重复开发,仅在lighttpd上配置了支持...

2019-11-21 19:51:06

阅读数 172

评论数 0

原创 printf打印设置字体和背景带颜色的输出方法

为了方便调试,难免会加一些log信息,当有大量log时,去翻阅很难一眼看出错误信息,这时就可以对log设置某些颜色或者高亮度等等。 具体格式如下: printf("\033[字背景颜色;字体颜色m 字符串 \033[0m"); 例子: printf("...

2019-11-18 14:43:44

阅读数 53

评论数 0

原创 buildroot package如何打patch

今天修改了thttpd的源码,需要通过在buildroot package里面通过打patch的方式。 其实打patch的方式很简单,只要把生成的patch文件放在对应目录下,比如thttpd 放在后重新make clean,make命令,就会自动打好patch。 主要是patch的命名...

2019-11-14 19:54:12

阅读数 154

评论数 0

原创 Thttpd上传大文件的方法

最近在给Microsoft做一个项目,碰到需要上传几百MB的文件,而thttpd本身也是支持上传文件功能的,只是thttpd为了考虑一些需求在某些方面进行了限制。 这里我做个简单的介绍,thttpd的main()函数在thttpd.c里面,解析http参数的功能在libhttpd.c。con...

2019-11-14 19:30:45

阅读数 51

评论数 0

原创 JSON数据key和value之间有空格问题

项目终于暂时告一段落了,之前在帮Microsoft调试一些功能,根据Microsoft提供的SPEC,要求返回数据为JSON格式,并且严格要求key和value之间不能有空格,可能会导致Microsoft无法正常解析返回结果。 追了一下cJSON的源代码,发现空格的产生是因为cJSON特意...

2019-11-14 18:05:00

阅读数 257

评论数 0

翻译 计算从1970年到当前时间所经历过的秒数

这个算法来自LINUX的源码,下面带有大神的解析,自己在RTC实验中也使用了,不用月份表,润平年的处理,几行就可得出结果,以下是程序和大神的解析 Linux源码中的mktime算法解析 我们知道,从CMOS中读出来的系统时间并不是time_t类型,而是类似于struct tm那样,年月日时分秒...

2019-09-18 18:22:54

阅读数 7439

评论数 1

原创 vi快捷键

今天分享一些常用的vi快捷键,后续有遇到会继续添加。 移动光标 上:k nk:向上移动n行 9999k或gg可以移到第一行 G移到最后一行 下:j nj:向下移动n行 左:h nh:向左移动n列 右:l nl:向右移动n列 w:光标以单词向前移动 nw:光标向前移动n个单词 光标到单词的第...

2019-04-09 19:51:46

阅读数 73

评论数 0

转载 网络流媒体协议之——RTSP协议

RTSP(Real-Time Stream Protocol)协议是一个基于文本的多媒体播放控制协议,属于应用层。RTSP以客户端方式工作,对流媒体提供播放、暂停、后退、前进等操作。该标准由IETF指定,对应的协议是RFC2326。   RTSP作为一个应用层协议,提供了一个可供扩展的框架,使...

2019-01-16 18:02:30

阅读数 128

评论数 0

原创 使用libcurl库进行http通讯网络编程

  一、LibCurl基本编程框架 二、一些基本的函数 三、curl_easy_setopt函数部分选项介绍 四、curl_easy_perform 函数说明(error 状态码) 五、libcurl使用的HTTP消息头 六、获取http应答头信息 七、多线程问题 八、什么时候libcurl无法...

2019-01-08 17:49:39

阅读数 147

评论数 0

原创 C语言实现遍历目录并用树状打印

头文件: #include <sys/types.h> #include <dirent.h> struct dirent {     ino_t d_ino; //d_ino 此目录进入点的inode     ff_t d_off...

2018-12-20 10:53:39

阅读数 906

评论数 0

原创 Linux使用libqrcode生成二维码图片

之前在做跟华为合作的项目,需要根据字串来生成特定的二维码,特在此记录,以便查看。 二维码图样有很多种,根据项目要求,我选择了使用libqrcode库来实现,这是个开源库,使用十分方便,首先下载libqrcode源码,根据平台选择编译条件并编译成动态库so。在自己编写程序包含相应的头文件,编译链接...

2018-12-17 16:15:06

阅读数 747

评论数 0

原创 使用libpng读写PNG图片

libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库。借助它,你可以轻松读写PNG文件的每一行像素。 因为PNG文件是经过压缩而且格式复杂的图形文件(有的PNG文件甚至像GIF文件一样带动画效果) 而且PNG可以是带透明通道的真彩色图像、不带透明通道的真彩色图像、索引颜色、灰度颜色等...

2018-12-14 17:21:11

阅读数 3398

评论数 6

原创 Linux Excel (*.xls)文件读取,使用libxls库

首先下载libxls,项目地址:http://sourceforge.net/projects/libxls/ 解压后使用: ./configure --prefix=/usr make sudo make install 安装,请注意,在configure前,一定要安装libicon...

2018-12-13 15:58:06

阅读数 3511

评论数 2

原创 Linux使用iconv进行编码转换

       最近在做项目,为了能让UI显示中文,需要对中文进行编码转换。因为我用的是directfb,它只支持utf-8格式,所以要将gb2312转换为utf-8,这时使用iconv是非常方便的。  以下是我在项目中用到的一部分代码。 首先要使用iconv的API需要包含它的头文件#incl...

2018-10-18 11:12:10

阅读数 333

评论数 0

转载 libxml2的安装及使用

本文着重介绍解析xml的libxml2库的安装及使用,举例说明创建和解析xml的过程。是针对C语言开发人员使用 你若想详细学习前端的一套东西,即xml   html  css   javascript(JS)等,可以登录这个网站http://www.runoob.com/ 一、libxml2的...

2018-09-12 17:18:34

阅读数 1131

评论数 0

原创 金融交易报文ISO8583协议

前言 最初,金融系统只有IBM这些大公司来提供设备,象各种主机与终端等,后来有很多大大小小的公司进入,怎样设计一个报文协议,解决各公司金融系统之间的报文交换,暂且称该协议叫做ISO8583协议。例如“回头客会员管理系统”POS机上应用的就是8583报文。 金融行业涉及到的数据内容是比较少的,如...

2018-09-04 14:20:45

阅读数 139

评论数 0

原创 CGIC中文文档

CGIC英文文档地址:https://boutell.com/cgic/cgic是用c写cgi程序的一个很小的库,所以英文文档也很少,为了便于日后复习翻看,心血来潮,翻译了一遍。1. 什么是cgic?cgic是一个c语言库,用于基于CGI标准规范的www应用程序的创建。cgic执行以下任务:(1)...

2018-03-05 14:49:27

阅读数 183

评论数 0

原创 linux线程资源回收方法

在写网络服务器程序时可能需要实现多线程接收多个客户端的数据,死循环等待client的connect,connect之后创建thread,这样其实有一个问题,服务器程序需要长期运行,长时间线程的创建,线程资源的回收就是一个问题。 Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同...

2017-10-11 09:36:58

阅读数 545

评论数 0

转载 linux 获取eth0(指定网卡)网卡的IP地址(或MAC地址)

引言 使用场景: 我使用的Linux服务器上有多个网卡,有时候就需要在脚本中使用到指定网卡的IP地址或MAC地址,那么这个时候就有两种做法,一是预先读取网卡的IP地址或MAC地址,然后写入到脚本中;另外一种方法就是通过shell命令实时获取指定网卡上的当前IP地址或MAC地址。 一般用法: ...

2017-09-13 20:13:06

阅读数 6552

评论数 0

原创 Linux cut命令用法

cut是一个选取命令,就是将一段数据经过分析,取出我们想要的。一般来说,选取信息通常是针对“行”来进行分析的,并不是整篇信息分析的 (1)其语法格式为: cut  [-bn] [file] 或 cut [-c] [file]  或  cut [-df] [file] ...

2017-09-06 11:03:36

阅读数 257

评论数 0

原创 linux awk命令

简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,...

2017-09-06 10:51:37

阅读数 150

评论数 0

原创 checksum校验

原理         P/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,采用的都是将数据流视为16位整数流进行重复叠加计算。为了计算检验和,首先把检验和字段置为0。然后,对有效数据范围内中每个16位进行二进制反码求和,结果存在检验和字段中,如果数据长度为奇数则补一字节0...

2017-08-16 19:55:45

阅读数 473

评论数 0

原创 TCP/IP checksum 简析

Checksum原理 Checksum广泛应用于TCP/IP协议族,用于校验IP、TCP、UDP数据,其原理比较简单,其计算校验和的步骤如下:  1)在数据发送端,首先将检验和字段本身清零,将被检验的相邻字节成对配成16bit的整数,将所有的配对相加,同时将进位加到校验和的低字节上,我们将...

2017-08-16 19:01:27

阅读数 359

评论数 0

原创 iptables用法简介

iptables的基本语法格式 iptables [-t 表名] 命令选项 [链名] [条件匹配] [-j 目标动作或跳转] 说明:表名、链名用于指定iptables命令所操作的表和链,命令选项用于指定管理iptables规则的方式(比如:插入、增加、删除、查看等;条件匹配用于指定对符合什...

2017-08-02 20:30:04

阅读数 193

评论数 0

原创 Linux下MD5移植和编程

1、安装MD5工具 首先下载MD5工具源码: 进入地址:http://martin.hinner.info/libmd/ 下载libmd库libmd-0.3.tar.bz2 在ubuntu14.04安装libmd工具: #tar -jxvf libmd-0.3.tar.bz2 #cd libmd-...

2017-07-27 11:03:18

阅读数 669

评论数 0

原创 Makefile中的wildcard、notdir、patsubst 用法

在Makefile规则中,通配符会被自动展开。但在变量的定义和函数引用时,通配符将失效。这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTERN...) 。在Makefile中,它被展开为已经存在的、使用空格分开的、匹配此模式的所有文件...

2017-07-26 15:32:41

阅读数 338

评论数 0

转载 linux下编译安装libcurl(附使用示例)

linux下编译安装libcurl(附使用示例)         说明:在编译任何开源代码前可以先看看README, INSTALL等文件,会提供如何编译的信息。在 此教程中通过阅读README和GIT-INFO文件可以得到很多编译安装信息。在GIT-INFO中很明显地说了执 行:....

2017-06-29 16:42:35

阅读数 2690

评论数 0

转载 motion的移植和使用

说明: motion主页:http://www.lavrsen.dk/foswiki/bin/view/Motion motion下载地址:http://sourceforge.net/projects/motion/files/motion%20-%203.2/ 系统: U...

2017-06-20 13:59:53

阅读数 897

评论数 0

原创 Linux进程间通信之消息队列

一、什么是消息队列 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。  每个数据块都被认为含有一个类型,接收进程可以独立地接收含有不同类型的数据结构。我们可以通过发送消息来避免命名管道的同步和阻塞问题。但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制。 Lin...

2017-06-19 18:49:23

阅读数 166

评论数 0

原创 Linux进程间通信之共享内存

一、什么是共享内存 顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它...

2017-06-19 18:47:08

阅读数 133

评论数 0

转载 CGIC编程

本系列的目的是演示如何使用C语言的CGI库“CGIC”完成Web开发的各种要求。       基础知识     * 1: 使用CGIC的基本思路     * 2: 获取Get请求字符串     * 3: 反转义     * 4: 获取请求中的参数值      进阶训练    ...

2017-06-18 14:55:24

阅读数 801

评论数 0

原创 CGI编程

很多人都没有听说过CGI,因为现在它的很多功能都被JavaScript代替了,但是在某些地方它的使用性还是不错的,有想要了解的朋友建议参考https://wenku.baidu.com/view/11eb19f90242a8956bece4c2.html,这篇介绍得很详细。

2017-06-17 22:43:56

阅读数 161

评论数 0

原创 HTTP协议(上):简介

1. Web服务器 WWW是 World Wide Web (环球信息网)的缩写,也可以简称为 Web,中文名字为“万维网”。 Web服务器(也称WWW服务器)一般指网站服务器,主要功能是提供网上信息浏览服务。 目前最主流的三个Web服务器是Apache、Nginx、IIS。一些...

2017-06-16 11:10:48

阅读数 359

评论数 0

原创 HTTP协议(中):请求报文和响应报文

1. 请求报文格式 1.1 服务器测试代码 服务器测试代码: #include #include #include #include #include #include #include int m...

2017-06-16 11:10:18

阅读数 1447

评论数 0

原创 HTTP协议(下):HTTP协议实现通信

1. 概述 服务器的开发不容易,尤其是开发高性能、稳定性好服务器,更加不容易,因此人们尝试更好简单的方式来开发软件。 在服务器方面,使用Web服务器,采用HTTP协议来代替底层的socket,是常见的选择。采用HTTP协议更加除了能得到稳定的服务器支持外,更加可以兼容各种客户端(手机、PC、浏...

2017-06-16 10:08:07

阅读数 327

评论数 0

转载 C语言可变参数的使用

概要 众所周知,C++支出函数重载,而C语言默认是不支持。但是,c语言可以通过可变参数实现类似函数重载的功能。 如LinuxC 的open()函数,这个函数有2个版本。有一个可选的第三个参数时只需要文件可能被创建。第三个参数描述了使用新文件的权限设置。 #include <sys/t...

2017-06-14 13:42:51

阅读数 293

评论数 0

转载 文件描述符的复制:dup()和dup2()

dup() 和 dup2() 是两个非常有用的系统调用,都是用来复制一个文件的描述符,使新的文件描述符也标识旧的文件描述符所标识的文件。 这个过程类似于现实生活中的配钥匙,钥匙相当于文件描述符,锁相当于文件,本来一个钥匙开一把锁,相当于,一个文件描述符对应一个文件,现在,我们去配...

2017-06-14 11:47:07

阅读数 219

评论数 0

转载 I/O多路复用select、poll、epoll的区别使用

I/O 多路复用技术是为了解决进程或线程阻塞到某个 I/O 系统调用而出现的技术,使进程不阻塞于某个特定的 I/O 系统调用。 select(),poll(),epoll()都是I/O多路复用的机制。I/O多路复用通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪...

2017-06-14 11:43:47

阅读数 1151

评论数 0

原创 Linux crontab 命令详解

在 Linux 中,任务可以被配置在指定的时间段、指定的日期、或系统平均载量低于指定的数量时自动运行。系统预配置了对重要系统任务的运行,以便使系统能够时时被更新。譬如,被 locate 命令使用的 slocate 数据库每日都被更新。系统管理员可使用自动化的任务来执行定期备份、监控系统、运行定制脚...

2017-06-11 16:46:31

阅读数 165

评论数 0

原创 do...while(0)解析

为什么在内核中碰到很多  #define ...  do{...} while(0) ? 有以下几点原因: 1、空语句在编译的时候会出现警告,所以有必要用#define FOO do{ } while(0) 2、给定一个基本块,可以在里面定义局部变量 3、为了能够在条件...

2017-06-10 23:37:41

阅读数 200

评论数 0

提示
确定要删除当前文章?
取消 删除