
Linux
文章平均质量分 57
CodeHeng
这个作者很懒,什么都没留下…
展开
-
inet_aton,inet_ntoa,inet_addr,inet_network的细微区别
一、函数原型int inet_aton(const char *cp, struct in_addr *inp);char *inet_ntoa(struct in_addr in);in_addr_t inet_addr(const char *cp);in_addr_t inet_network(const char *cp);二、区别inet_addr和inet_原创 2014-12-02 13:59:45 · 822 阅读 · 0 评论 -
H264码流打包成RTP包
H264码流打包成RTP包的代码如下:[cpp] view plaincopy#include #include #include #include #include #include //#include "mem.h" #define PACKET_BU转载 2015-07-01 14:11:35 · 2382 阅读 · 0 评论 -
RTP 头格式
RTP头格式如图2所示:开始12个八进制出现在每个RTP包中,而CSRC标识列表仅出现在混合器插入时。各段含义如下:①版本(V)2位,标识RTP版本。②填充标识(P)1位,如设置填充位,在包尾将包含附加填充字,它不属于有效载荷。填充的最后一个八进制包含应该忽略的八进制计数。某些加密算法需要固定大小的填充字,或为在底层协议数据单元中携带几个RTP包。③扩展(X)1位,转载 2015-07-01 13:45:18 · 530 阅读 · 0 评论 -
RTP解包
同前篇类似,修改自vc下的程序,跟打包相反,原理就是从udp接收一个数据包,判断这个数据包是单个发送还是分片发送,进而获取rtp包中的h264NAL数据,并加上0x00000001起始字节一并写进文件中即可。[cpp] view plaincopy#include #include #include转载 2015-07-03 15:47:03 · 2549 阅读 · 0 评论 -
Linux常用C函数-字符串转换篇
字符串转换篇atofatoiatolgcvtstrtodstrtolstrtoultoasciitolowertoupperatof(将字符串转换成浮点型数)相关函数atoi,atol,strtod,strtol,strtoul表头文件#include 定义函数转载 2015-07-17 15:04:19 · 606 阅读 · 0 评论 -
Linux常用C函数-字符测试篇
字符测试篇isalnumisalphaisasciiiscntrlisdigitisgraphisislowerisprintisspaceispunctisupperisxdigitisalnum(测试字符是否为英文或数字)相关函数isalpha,isdigit,islower,isu转载 2015-07-17 15:03:10 · 698 阅读 · 0 评论 -
局域网广播收发
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;#define BROADCAST_PORT 8186#define MAX_IPC_NUM 100#defi原创 2015-08-03 09:03:09 · 578 阅读 · 0 评论 -
Linux脚本的问题
1、在windows下编辑然后上传到linux系统里执行会报错。.sh文件的格式为dos格式。而linux只能执行格式为unix格式的脚本。2、vi设置unix格式步骤:a.VI打开脚本,命令行模式下:set ff=unixb.查看是否设置对:set ff原创 2016-01-29 20:21:12 · 453 阅读 · 0 评论 -
grep遍历文件夹查找文本内容
有时候我们需要在某一个包含很多子目录的目录中搜索查找包含某个文本内容的文本,我们可以在grep中加上 -r选项让grep命令迭代进入子目录查找。同时在命令最后加上代表文件通配符的*号,不然grep会一直等待输入。命令方式如下所示: grep -r "特定字符串" *转载 2016-03-03 17:16:23 · 3269 阅读 · 0 评论 -
arping IP冲突问题
#include #include #include #include #include #include #include #include #include #include #include #include #include #include "random_ip.h"#define IF_NAME "eth0"//ARP消息包结构typedef st原创 2016-04-25 10:08:19 · 1539 阅读 · 0 评论 -
shell 函数返回值问题
方法一: 使用全局变量[html] view plain copy g_result="" function testFunc() { g_result='local value' } testFunc echo $g_result 方法二: 把shell函数作为子程序转载 2016-04-28 09:01:38 · 1554 阅读 · 0 评论 -
sed 文本替换
调用sed命令有两种形式:sed [options] 'command' file(s)sed [options] -f scriptfile file(s) 删除:d命令 $ sed '2d' example-----删除example文件的第二行。$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。转载 2016-04-29 14:00:36 · 696 阅读 · 0 评论 -
shell 编程空格注意事项
1.定义变量时, =号的两边不可以留空格.eg:gender=femal————rightgender =femal———–wronggender= femal———–wrong2.条件测试语句 [ 符号的两边都要留空格.eg:if [ $gender = femal ]; then——-right.echo “you are femal”;fiif[转载 2016-04-18 09:47:38 · 3255 阅读 · 0 评论 -
计算G711语音的打包长度和RTP里timestamp的增长量
如何计算G711语音等的打包长度和RTP里timestamp的增长量一般对于不同的语音有不同的打包周期,而不同的打包周期又对应着不同的timestamp in RTP那么是如何计算的呢,我们通过G711举个例子G711的打包周期分为10ms,20ms,30ms,sample rate是8000,速率是64kbit/s64kbits,意味着每秒发送64000比特转载 2016-05-06 10:06:47 · 1655 阅读 · 0 评论 -
wav 文件头解析
#include #include #include #include #include #include //wave文件头 typedef struct WaveHeader { unsigned char riff[4]; //资源交换文件标志 unsigned long size; //从下个原创 2016-05-18 13:44:03 · 1120 阅读 · 0 评论 -
移植speex库
1、下载speex源代码http://download.youkuaiyun.com/detail/codeheng/95238562、配置makefile./configure --host=arm-linux CC=arm-linux-gcc --enable-static --disable-shared3、make4、xx\speexdsp-1.2rc3\libspeexdsp原创 2016-05-18 15:46:17 · 3316 阅读 · 1 评论 -
shell脚本dos问题
1、很多时候我们需要在windows编辑脚本文件,但是在Linux执行不了,原因是window下的是dos格式的文本,Linux下是unix文本2、用vi转格式:set ff=unix或者:set fileformat=unix//保存:wq原创 2016-05-18 16:52:36 · 1109 阅读 · 0 评论 -
RTP 打包H.264
[cpp] view plaincopyprint?#include #include #include #include #include #pragma comment( lib, "ws2_32.lib" ) #define PACKET_BUFFER_END (unsigned int)0x转载 2015-07-01 14:12:57 · 931 阅读 · 0 评论 -
字节对齐详解,及可能带来的问题
一.什么是字节对齐,为什么要对齐? 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因:各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型转载 2015-07-07 16:32:51 · 2179 阅读 · 0 评论 -
Linux下时间编程
一、说明一般Linux下提供的时间服务都是从国际标准时间公元1970年1月1日00:00:00以来经过的秒数,这种类型用time_t表示,一般我们称之为日历时间,这是我们要用的源。二、获取系统时间并转成字符串步骤#include time_t time(time_t *calptr);原创 2014-12-02 19:12:30 · 388 阅读 · 0 评论 -
inet_pton,inet_ntop介绍
一、函数原型#include #include #include int inet_pton(int af, const char *src, void *dst);const char *inet_ntop(int af, const void *src, char *dst, socklen_t cnt);二、说明Linux下这两个函数都是对IP地址的操作,从点原创 2014-12-02 18:18:58 · 700 阅读 · 0 评论 -
Linux下mmap函数详解
一.前言mmap的具体实现以前在学习内核时学习过,但是对于其中的很多函数是一知半解的,有些只能根据其函数名来猜测其具体的功能,在本文中,一起来重新深入理解其具体的实现。二.mmap的用户层应用void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 具体参数含义start :转载 2014-12-09 09:57:51 · 931 阅读 · 0 评论 -
Linux下ioctl获取接口信息
一、ifconf和ifreq结构//ifconf通常是用来保存所有接口信息的//if.hstruct ifconf{ int ifc_len; /* size of buffer */ union { char *ifcu_buf; /* input from user->kernel*/ struct ifreq *ifcu_req; /* return from ker原创 2014-12-29 16:20:29 · 1681 阅读 · 0 评论 -
connect设置超时的方法
在使用TCP的connect连接服务器时,在默认情况下系统使用的是阻塞式socket,如果服务器当前不可用,则connect会等待知道超时时间到达,而这个超时时间是系统内核规定的,并不能使用setSocketOpt来设置,这个函数只能设置send和recv的超时,为了能够随意控制connect的超时时间,可以使用select。大致的过程就是先将socket设置成非阻塞,使用select去轮询套接口转载 2015-03-25 18:50:40 · 21445 阅读 · 1 评论 -
linux定时器的实现
一、setitimer函数实现/*mul_timer.h*/#ifndef _MUL_TIMER_H_#define _MUL_TIMER_H_#include #define MAX_TIMER_CNT 10#define MUL_TIMER_RESET_SEC 1#define TIMER_UNIT 1#define MAX_FUNC_ARG_LEN 1原创 2015-04-01 19:05:25 · 614 阅读 · 0 评论 -
libuv库定时器的使用
老大前几天提到libuv,我只看过一点libevent, 听说过libev,没听说过libuv,查了一下才知道libuv。先到github git clone 源码,编译,测试,看测试代码头文件uv.h定时器部分的函数,头文件有详细的注释/* * uv_timer_t is a subclass of uv_handle_t. * * Used to转载 2015-04-01 22:55:06 · 1691 阅读 · 0 评论 -
Linux下samba的配置
编辑/etc/samba/smb.conf文件,在最后加上 [opt];comment = Shared Folder with username and passwordpath = /optpublic = yeswritable = yesvalid users = lfhcreate mask = 0777directory mask = 0777f原创 2015-04-02 08:45:11 · 518 阅读 · 0 评论 -
ubuntu镜像作为apt的源
1、建立共享文件夹,在ubuntu的路径是 /mnt/hgfs/share2、将iso挂载到自己建立的某个挂载点,如我建立的是 /mnt/sourceiso执行命令 sudo mount -o loop /mnt/hgfs/share/ubuntu-10.04-dvd-i386.iso /mnt/sourceiso查看/mnt/sourceiso挂载点是否成功挂载3、修改/etc原创 2015-04-02 09:43:53 · 1012 阅读 · 0 评论 -
TinyXml库的基本操作
#ifndef _PARSE_XML_H_#define _PARSE_XML_H_#include "tinyxml.h"#include "tinystr.h"#include void CreateNode(TiXmlNode *ParentNode, const char *NodeName, const char *NodeText,原创 2015-04-01 19:28:27 · 1015 阅读 · 0 评论 -
libuv库TCP echo-server
学习libuv库,写TCP echo-server大部分代码都来自libuv源码test目录下echo-server.c文件。我自己添加了一点代码,通过uv_read_start函数更改read_cb函数使得第奇数次客户端输入一行文字后,服务端原样返回,偶数次输入一行文字,服务端将输入的一行文字逆序后返回结果如下:cheng@debian:~$转载 2015-04-01 22:53:42 · 1517 阅读 · 0 评论 -
udp发包大小选择
在进行UDP编程的时候,我们最容易想到的问题就是,一次发送多少bytes好?当然,这个没有唯一答案,相对于不同的系统,不同的要求,其得到的答案是不一样的,我这里仅对像ICQ一类的发送聊天消息的情况作分析,对于其他情况,你或许也能得到一点帮助:首先,我们知道,TCP/IP通常被认为是一个四层协议系统,包括链路层,网络层,运输层,应用层.UDP属于运输层,下面我们由下至上一步一步来看:转载 2015-04-01 19:03:55 · 3187 阅读 · 2 评论 -
epoll,select,poll单线程服务端示例
1、关于字节排序 网际协议采用大端字节序,来传输多字节整数。 系统提供了转换的宏定义,如果主机与网际协议相同,则宏定义为空。2、客户端 socket -> connect(阻塞,三次握手)-> rcv3、服务器端 socket -> bind -> listen -> accept(阻塞,三次握手)-> send4、函数介绍 a..socket转载 2015-04-09 09:03:10 · 781 阅读 · 0 评论 -
linux strace 工具的使用
简介strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Linux世界,进程不能直接访问硬件设备,当进程需要访问硬件设备(比如读取磁盘文件,接收网络数据等等)时,必须由用户态模式切换至内核态模式,通 过系统调用访问硬件设备。strace可以跟踪到一个进程产生的系统调用,包括参数,返回值,执行消耗的时间。输出参数含义root@ubuntu:/usr# strac转载 2015-05-20 10:24:16 · 461 阅读 · 0 评论 -
通用的makefile,制作动态库和静态库
#################################################################自动将src目录下所有的cpp、cc和c文件编译,生成所有.o文件保存在bin/objs下#自动生成静态库和动态库文件到lib目录下#Created by lfh 2015-04-14 ############################原创 2015-04-14 16:02:54 · 872 阅读 · 0 评论 -
位结构体详解
位结构体位结构 节省存贮空间 “:”操作符 位域一、首先说概念:位结构是一种特殊的结构, 在需按位访问一个字节或字的多个位时, 位结构比按位运算符更加方便。 位结构定义的一般形式为: struct 位结构名{ 数据类型 [变量名]: 整型常数; //成员称为“位域”或者“位段”数据类型 [变量名]: 整型常数; } 位结构变量; 其转载 2015-06-26 13:43:58 · 1878 阅读 · 0 评论