linux编程基础
期待一片自己的蓝天
在加利福尼亚州门洛帕克的Facebook园区入口可以看到一个标牌,正面是经典的竖起大拇指点赞的图案,然而在这个标牌的背面,掩映在树荫里的依然是园区昔日所有者2009年被甲骨文公司Oracle吞并的Sun电子计算机公司Sun Microsystems Inc.的名字。Facebook之所以在牌子上留下Sun电子计算机公司的名字就是为了警醒自己,如果企业停止创新的步伐,就会沦落至如此下场。
展开
-
sendfile(零拷贝技术)写的一个简单的服务器程序
服务器给客户端发送文件时,总是先把数据从内核空间读到用户空间,再发送给客户端,即先建立一个缓冲区,用read函数或者fread函数把文件内容读入缓冲区,再进行发送。而从内核空间拷贝到用户空间属于系统调用,是会消耗系统资源的,所以出现了零拷贝技术,即直接从服务器端的内核空间发送到客户端,少了一个拷贝的过程,从而降低系统资源消耗。 下面这段程序,是一个简单的服务器端代码,客户机连上服务原创 2015-01-09 23:42:10 · 948 阅读 · 0 评论 -
NET穿透技术---UDP打孔
在网络编码中会发现程序在局域网中是可以适用的,但是在外网与内网之间和内网与内网之间就不可行。问题就在于NAT。首先介绍下NAT。 NAT的作用NAT(Network Address Translator),网络地址转换。顾名思义,它是一种把内部私有网络IP地址翻译成公有网络IP地址的技术,如图5-1所示。NAT是在IP地址日益缺乏的情况下产生的,它的主要目的是使地址能够重用[9]。原创 2015-04-22 14:41:32 · 3855 阅读 · 0 评论 -
非阻塞connect的作用及代码示例
connect 函数的调用涉及到TCP连接的三次握手过程,通常阻塞的connect 函数会等待三次握手成功或失败后返回,0成功,-1失败。如果对方未响应,要隔6s,重发尝试,可能要等待75s的尝试并最终返回超时,才得知连接失败。即使是一次尝试成功,也会等待几毫秒到几秒的时间,如果此期间有其他事务要处理,则会白白浪费时间,而用非阻塞的connect 则可以做到并行,提高效率。原创 2015-05-22 16:32:39 · 2357 阅读 · 0 评论 -
epoll的两种触发模式
epoll有两种模式,Edge Triggered(简称ET) 和 Level Triggered(简称LT).在采用这两种模式时要注意的是,如果采用ET模式,那么仅当状态发生变化时才会通知,而采用LT模式类似于原来的select/poll操作,只要还有没有处理的事件就会一直通知. 以代码来说明问题: 首先给出server的代码,需要说明的是每次accept的连接,加入可读集的时候采用原创 2015-07-31 22:48:41 · 1255 阅读 · 0 评论