摘要:采用TCP连接的C/S模式软件,连接的双方在连接空闲状态时,如果任意一方意外崩溃、当机、网线断开或路由器故障,另一方无法得知TCP连接已经失效,除非继续在此连接上发送数据导致错误返回。很多时候,这不是我们需要的。我们希望服务器端和客户端都能及时有效地检测到连接失效,然后优雅地完成一些清理工作并把错误...
阅读全文
01 2015 档案
摘要:在掌握了socket相关的一些函数后,套接字编程还是比较简单的,日常工作中碰到很多的问题就是客户端/服务器模型中,如何让服务端在同一时间高效的处理多个客户端的连接,我们的处理办法可能会是在服务端不停的监听客户端的请求,有新的请求到达时,开辟一个新的线程去和该客户端进行后续处理,但是这样针对每一个客户...
阅读全文
摘要:一、进程的创建fork()函数由fork创建的新进程被称为子进程(child process)。该函数被调用一次,但返回两次。两次返回的区别是子进程的返回值是0,而父进程的返回值则是 新子进程的进程ID。将子进程ID返回给父进程的理由是:因为一个进程的子进程可以多于一个,所有没有一个函数使一个进程可...
阅读全文
摘要:一、进程的定义 进程是操作系统的概念,每当我们执行一个程序时,对于操作系统来讲就创建了一个进程,在这个过程中,伴随着资源的分配和释放。可以认为进程是一个程序的一次执行过程。二、进程与程序的区别 程序时静态的,它是一些保存 在磁盘上得指令的有序集合,没有任何执行的概念。 进程是一个动态的概念,...
阅读全文
摘要:linux进程编程:子进程创建及执行函数简介 子进程创建及执行函数有三个:(1)fork();(2)exec();(3)system(); 下面分别做详细介绍。(1)fork() 函数定义: pid_t fork(); 函数说明: linux下进程在内存中由三部分数据组成:代码段、数据段、堆栈段。在...
阅读全文
摘要:(1)fork()的定义fork()函数是Unix中派生新进程的唯一方法,声明如下:[cpp]view plaincopy#includepid_tfork(void);我们需要理解的是,调用一次fork()方法,该方法会返回两次。一次是在调用进程(也就是派生出的子进程的父进程)中返回一次,返回值是...
阅读全文
摘要:int status;pid_t t = fork();if(t){waitpid(t, &status, 0);}else{system("vi temp.txt");exit(0);}//父进程和子进程均执行完毕后继续执行下去分析过程:if和else还是选择分支。主要的原因是,fork()函数调...
阅读全文
摘要:在windows下创建子进程较常用到的API就是CreateProcess,可以通过以下的方式启动一个新进程: STARTUPINFO si = {0}; PROCESS_INFORMATION pi = {0}; si.cb = sizeof(STARTUPINFO); //结构体大小 Ge...
阅读全文
摘要:大家知道Linux中创建子进程的一个很好的方法是函数调用fork,但是很多初学者对fork的理解上可能有点困难。我们举个例子来看看fork的用法吧。 大家用fork的时候记住fork是“分叉”的意思就很好理解了。 记得初学fork() 函数及遇到这个函数时,总是不能理解fork为什么会这样写,就会分...
阅读全文
摘要:一. read/write的语义:为什么会阻塞?先从write说起:#include ssize_t write(int fd, const void *buf, size_t count);首先,write成功返回,只是buf中的数据被复制到了kernel中的TCP发送缓冲区。至于数据什么时候被发...
阅读全文
摘要:TCP异常断开是指在突然断电,直接拔网线等等情况下,如果通信双方没有进行数据发送通信等处理的时候,无法获知连接已经断开的情况. 在通常的情况下,为了使得socket通信不受操作系统的限制,需要自己在应用层实现心跳包机制,来检查异常断开的情况,一般的方式就是服务器在一段时间没有收到客户端数据包时,定时...
阅读全文
摘要:不多说了,curl的http上传文件代码示例,有需要的可以参考。int http_post_file(const char *url, const char *user, const char *pwd, const char *filename){ assert(url != NULL); ass...
阅读全文
摘要:我之前编译了jrtplib 3.9.1,并且在项目中使用,结果发现在用这个库时,程序体积有增加了300多K,感觉实在是有点笨重,我无法就是用来发送rtp包而已。想想还是自己重新实现一个简单的类用用拉倒了,所以有了下面的代码。头文件:[cpp]view plaincopy/*!@brief简单rtp库...
阅读全文
摘要:目录(?)[-]编辑 anjuta编辑 kdevelop编辑 geany编辑 codeblocks编辑 eclipse编辑 netbeans编辑 其他IDE编辑 相关链接为避免以下某个软件安装时不自动安装 build-essential 不妨先执行:sudo apt-get install buil...
阅读全文
摘要:Status of This Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions f...
阅读全文
摘要:目录(?)[-]第1章RTP概述RTP是什么RTP的应用环境相关概念流媒体第2章RTP详解RTP的协议层次传输层的子层应用层的一部分RTP的封装RTCP的封装RTP的会话过程第3章相关的协议实时流协议RTSP资源预定协议RSVP第4章常见的疑问怎样重组乱序的数据包怎样获得数据包的时序声音和图像怎么同...
阅读全文
摘要:[cpp]view plaincopy#ifdefWIN32#include#else#include#include#endif#includestd::stringgetCurrentAppPath(){#ifdefWIN32charpath[MAX_PATH+1]={0};if(GetModu...
阅读全文
摘要:1. H264视频的RTP封包[c-sharp]view plaincopystaticinth264_parse(Track *tr, uint8_t *data, size_t len){ h264_priv *priv = tr->private_data;// double nal_time...
阅读全文
摘要:网络抽象层单元类型 (NALU):NALU头由一个字节组成,它的语法如下: +---------------+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |F|NRI| Type | +---------------+F: 1个比特. forbidden_zero_bi...
阅读全文
摘要:最近在网络上看到一些帖子以及回复,同时又搜索了一些网络上关于阻塞非阻塞区别的描述,发现很多人在描述两者的发送接收时操作返回以及缓冲区处理的区别时有不同程度的误解。所以我想写一篇文章来纠正错误,并作为记录方便查阅,如有转载,注明作者(jwybobo2007)以及出处即可。 首先socket在默认情况下...
阅读全文
摘要:关于Tcp封包很多朋友已经对此作了不少研究,也花费不少心血编写了实现代码和blog文档。当然也充斥着一些各式的评论,自己看了一下,总结一些心得。首先我们学习一下这些朋友的心得,他们是:http://blog.csdn.net/stamhe/article/details/4569530http://...
阅读全文
摘要:解决了什么问题:curl在使用各种方式上传文件到服务器。一般的文件上传是通过html表单进行的,通过CURL可以不经过浏览器,直接在服务器端模拟进行表单提交,完成POST数据、文件上传等功能。服务器端PHP代码:0){echo"ReturnCode:".$_FILES["file"]["error"...
阅读全文
摘要:linux下gdb单步调试用 GDB 调试程序GDB 概述————GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能...
阅读全文
摘要:用gdb调试程序笔记: 以段错误(Segmental fault)为例[转]1.背景介绍2.程序中常见的bug分类3.程序调试器(如gdb)有什么用4.段错误(Segmental fault)介绍5.gdb调试入门一、背景介绍这个笔记主要介绍开源的程序调试器(gdb)的入门知识,目的是使unix/l...
阅读全文
摘要:如何保证服务一直运行?如何保证即使服务挂掉了也能自动重启?在写服务程序时经常会碰到这样的问题。在Linux系统中,强大的shell就可以很灵活的处理这样的事务。 下面的shell通过一个while-do循环,用ps -ef|grep 检查loader进程是否正在运行,如果没有运行,则启动,这样就保...
阅读全文
摘要:Linux中service命令和/etc/init.d/的关系service xxx启动 /etc/init.d/ 目录下的xxx脚本如一个脚本名为 mysvc保存在/etc/init.d/下可以用 service mysvc 运行mysvc脚本echo passed in option $0 $1...
阅读全文
摘要:Linux中,脚本语言环境中,即你用make xxx即其他一些普通linux命令,比如ls,find等,不同的数字,代表不同的含义:数字含义 标准叫法0 标准输入 stdin = standard input1 标准输出 stdout = standard output2 标准错误输出 stderr...
阅读全文
摘要:sigaction函数的功能是检查或修改与指定信号相关联的处理动作(可同时两种操作)。他是POSIX的信号接口,而signal()是标准C的信号接口(如果程序必须在非POSIX系统上运行,那么就应该使用这个接口)给信号signum设置新的信号处理函数act, 同时保留该信号原有的信号处理函数olda...
阅读全文
摘要:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出处、作者信息和本声明。否则将追究法律责任。http://ixdba.blog.51cto.com/2895551/806622一、什么是 FastCGIFastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多...
阅读全文
摘要:测试环境Linux 2.6.18nginx-1.0.4http://www.nginx.org/php-5.3.6http://www.php.net/一,安装Nginxwget http://nginx.org/download/nginx-1.0.4.tar.gztar -zxvf nginx-...
阅读全文
摘要:这篇是Nginx安装配置PHP(FastCGI)环境的教程。Nginx不支持对外部程序的直接调用或者解析,所有的外部程序(包括PHP)必须通过FastCGI接口来调用。一、什么是 FastCGIFastCGI是一个可伸缩地、高速地在HTTP server和动态脚本语言间通信的接口。多数流行的HTTP...
阅读全文
摘要:原为地址:http://www.laruence.com/2009/07/28/1030.htmlNginx是俄罗斯人编写的十分轻量级的HTTP服务器,以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配Lighttpd的性能,同时还没有Lighttpd的内...
阅读全文
摘要:1.nginx的安装:首先nginx的安装需要依赖最基础的三个包,这里面我们不设计更多的扩展模块,只是安装最基础的三个包,zlib 此包主要是对http内容进行gzip压缩,减少网络传输流量PCRE 此包主要是让nginx支持正则表达式,这个是必须装的,就连nginx的conf文件中都有正则表达式o...
阅读全文
摘要:安装完Darwin Streaming Server,就可以使用VLC通过RTSP协议播放流媒体文件了。但是我现在有一个需求,需要将一台DSS(假设为A机)上的媒体文件发送到另一台DSS(假设为B机)上,客户端VLC通过访问B机来播放A机的媒体文件,也就是使用B机作为转发服务器。在网上找了很多关于配...
阅读全文
摘要:How to setup Darwin Streaming Server 6.0.3 on 32 or 64 bit Linux platforms, add custom functionality by developing plugins ("modules" as Apple calls t...
阅读全文
摘要:这篇文章主要介绍了shell脚本中常见的一些特殊符号和它的作用详解,总结的很简洁,容易看懂,需要的朋友可以参考下在编写Shell脚本时,我们需要会用到各种各样的特殊符号,通过这些特殊符号可以使我们编写的代码更加简洁和高效,这里给大家汇总下:1、{} 大括号:用法一:通配符扩展eg: ls my_{f...
阅读全文
摘要:个人建议:使用DarwinStreamingSrvr5.5.5,因为DarwinStreamingSrvr6.0.3安装过程中有很多问题需要解决!而且安装只需执行./Install就可以!1:下载darwin源代码DarwinStreamingSrvr6.0.3-Source.tar,补丁patch...
阅读全文
摘要:Darwin Streaming Server 安裝操作Darwin Streaming Server是蘋果公司推出的開放源碼、跨平台多媒體串流伺服器, 提供音樂 (mp3) 與影音 (3gp、mp4、mov) 串流播放功能, 可由 Windows Media Player、VLC media pl...
阅读全文
摘要:目前主流的流媒体服务器有微软的windows media server、RealNetworks的Helixserver和苹果公司的Darwin Streaming Server. 微软的windows media server只能在windows2000 server和windows 2003 s...
阅读全文
摘要:买回来VPS后就一直想在上面搭建一个流媒体服务,在网上搜索了很多资料,大部分都是介绍Linux中安装Darwin Streaming Server 5.5.5版本,因为这个版本提供了针对linux的安装脚本。但既然官网有了6.0.3版本,于是果断尝试安装最新的版本。1、什么是Darwin Strea...
阅读全文
摘要:1基本信息编辑Vitamio是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。从2011年8月上线到2014年1月,Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐,全球已经有超过3000 种应用在使用Vitamio,覆盖用户超...
阅读全文
摘要:http://tengine.taobao.org/book/http://blog.sina.com.cn/s/articlelist_1929617884_0_1.htmlhttp://blog.csdn.net/Marcky/
阅读全文
摘要:ngx_http_request_s是nginx中非常重要的一个结构体,贯穿于htpp请求处理的整个过程中。下面解释了ngx_http_request_s结构体中与HTTP框架相关的重要的成员变量。[cpp]view plaincopyprint?structngx_http_request_s{u...
阅读全文
摘要:在开发功能灵活的Nginx模块时,需要从配置文件中获取特定的信息。不过,我们并不需要再编写一套读取配置的系统,Nginx已经为用户提供了强大的配置项解析机制,同时还支持“-s reload”命令,可以在不重启服务的情况下可使配置生效。一、Nginx配置文件简介如果编译安装Nginx时使用默认路径,那...
阅读全文
摘要:本例子实现了一个简单的hello world程序。运行效果:虚拟机Ubuntu中:win7中chrome浏览器:一、config文件编写Nginx提供了一种简单的方式将第三方的模块编译到Nginx中。首先把源代码文件全部放到一个目录下,同时在该目录中编写一个文件用于通知Nginx如何编译本模块,这个...
阅读全文