
网络编程
文章平均质量分 62
ws四年
这个作者很懒,什么都没留下…
展开
-
UNIX网络编程(七)互斥锁和条件变量
7.2互斥锁和条件变量互斥锁知道相互排斥,他是最基本的同步形式。互斥锁用于保护临界区,以保证任何时刻只有一个线程(进程)在执行其中的代码。互斥锁被声明为具有pthread_mutex_t类型的变量。如果互斥锁是静态分配的,那么我们可以把它初始化成常值PTHREAD_INITIALIZERstatic pthread_mutex_t lock=PTHREAD_INITIALIZE原创 2014-05-19 12:57:40 · 827 阅读 · 0 评论 -
Linux守护进程(daemon)编程规则
在编写守护程序时需要遵循一些基本的规则原创 2014-08-31 10:57:55 · 2020 阅读 · 0 评论 -
epoll与select区别
区别(epoll相对select优点)主要有三:1.select的句柄数目受限,在linux/posix_types.h头文件有这样的声明:#define __FD_SETSIZE 1024 表示select最多同时监听1024个fd。而epoll没有,它的限制是最大的打开文件句柄数目。2.epoll的最大好处是不会随着FD的数目增长而降低效率,在selec中采用轮询处理,原创 2014-08-26 12:33:36 · 1237 阅读 · 0 评论 -
Epoll在LT和ET模式下的读写方式
在一个非阻塞的socket上调用read/write函数, 返回EAGAIN或者EWOULDBLOCK(注: EAGAIN就是EWOULDBLOCK)从字面上看, 意思是:EAGAIN: 再试一次,EWOULDBLOCK: 如果这是一个阻塞socket, 操作将被block,perror输出: Resource temporarily unavailable总结:这个错误表示资源暂转载 2014-08-25 12:52:45 · 696 阅读 · 0 评论 -
进程间描述符传递
Linux下的描述符传递linux下子进程会继承父进程打开的描述符,实际中,我们可能需要父进程向子进程传递“后打开的描述符”,或者子进程需要向父进程传递;两个进程可以是无关的,需要这样的传递机制。两个进程间传递描述符涉及一下步骤:1.创建一个字节流或数据包的Uinx域套接字可以使用socketpair函数在父子进程之间建立减缓描述符的流管道,如果进城之间没有亲缘关系原创 2014-08-24 15:06:21 · 799 阅读 · 0 评论 -
Linux网络编程(三) TCP客户/服务器程序示例
下图是简单的回射服务器模型 利用fork生成一个子进程,来处理客户的数据 1.处理SIGCHLD信号 子进程终止后,如果父进程未加处理,子进程的状态就是僵死状态 设置僵死状态的目的是维护子进程的信息,以便在某个时刻父进程来获取。这些信息包括子进程的进程ID、终止状态以及资源利用信息(CPU时间、内存使用量等等)。如果一个进程终止,则该进程的所有子进程处于僵死状态,那么它的所有原创 2014-08-03 00:02:04 · 730 阅读 · 0 评论 -
Linux网络编程(一) 套接字编程简介
1.套接字地址结构 IPv4套接字地址结构 IPv4套接字地址结购也称为“网络套接字地址结构”,它以sockaddr_in命名,定义在中。 1: struct in_addr{ 2: in_addr_t s_addr; //32-bit IPv4 address 3: }; 4: 5: struct sockaddr_in{ 6: un原创 2014-08-02 11:26:16 · 603 阅读 · 0 评论 -
两种高性能 I/O 设计模式 Reactor 和 Proactor
Reactor 和 Proactor 是基于事件驱动,在网络编程中经常用到两种设计模式。 曾经在一个项目中用到了网络库 libevent,也学习了一段时间,其内部实现所用到的就是 Reactor,所知道的还有 ACE;Proactor 模式的库有 Boost.Asio,ACE,暂时没有用过。但我也翻阅了一些文档,理解了它的实现方法。下面是我在学习这两种设计模式过程的笔记。 Reactor R转载 2014-08-06 18:08:57 · 729 阅读 · 0 评论 -
Linux网络编程(七) 套接字选项
1.getsockopt和setsockopt函数 1: #include 2: int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen); 3: int setsockopt(int sockfd,int level,int optname,const void *optval原创 2014-08-03 19:51:41 · 1143 阅读 · 0 评论 -
Linux网络编程(六) shutdown函数
终止网络连接一般使用close函数。但是close有两个限制,可以使用shutdown函数来避免 (1)close把描述符的引用计数减一,仅在该计数变为0时才关闭套接字。使用shutdown可以不管引用计数就激发TCP的正常连接终止序列 (2)close终止读和写两个方向的数据传送。有时我们需要通知对端我们已经完成了数据发送,即使对端仍有数据要发送给我们 1: #include 2原创 2014-08-03 13:25:45 · 1143 阅读 · 0 评论 -
Linux 服务器模型
Linux 服务器模型分类: linux 奇淫技巧2013-10-07 10:25 956人阅读 评论(3) 收藏 举报此篇文章禁止转载,如若转载,请在下面联系我,谢谢~from:http://blog.youkuaiyun.com/lingfengtengfei/article/details/12348903转载 2014-07-09 13:50:48 · 530 阅读 · 0 评论 -
Linux网络编程(八) 高级I/O函数
1.设置套接字超时 设置套接字超时有以下三种方法: ·调用alarm函数,在指定超时期满时产生SIGALRM信号 ·在select中阻塞等待IO(select内置的时间限制),以此代替直接阻塞在read或write调用上 ·使用SO_RCVTIMEO和SO_SNDTIMEO套接字选项 使用SIGALRM为connect设置超时 1: #include"unp.h" 2: st原创 2014-08-03 21:00:11 · 680 阅读 · 0 评论 -
Linux网络编程(五) select函数
该函数允许进程指示内核等待多个事件中的任何一个发生,并且只有在一个或多个事件发生或经历一段指定的时间后才唤醒它。 我们调用select告知内核对哪些描述符感兴趣以及等待多长时间 1: #include 2: #includetime.h> 3: int select(int maxfd1,fd_set *readset,fd_set *writeset,fd_set *exce原创 2014-08-03 12:32:32 · 787 阅读 · 0 评论 -
Linux网络编程(四) I/O模型
下面分析一下5种基本模型的区别: ·阻塞式IO; ·非阻塞使IO; ·IO复用 ·信号驱动式IO ·异步IO 一个输入操作通常包含两个不同的阶段 (1)等待数据准备好 (2)从内核向进程复制数据 对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待的分组到达时,它被复制到内核的某个缓冲区中。第二步就是把数据从内核缓冲区复制到应用进程的缓冲区 1.阻塞式原创 2014-08-03 00:34:45 · 728 阅读 · 0 评论 -
Linux网络编程(二) 基本TCP套接字编程
1.socket函数 为了执行网络IO,一个进程必须先调用socket函数,指定期望通信的协议类型 1: #include 2: int socket(int family,int type,int protocol); 3: //返回:成功返回非负描述符,若出错返回-1family参数的值AF_INET IPv4协议AF_INET6 I原创 2014-08-02 20:32:35 · 744 阅读 · 0 评论 -
UNIX网络编程(十)Posix信号量
10.1概述信号量是一种用于不同进程间或者一个给定进程中的不同线程间的同步手段的原语;二值信号量:其值或为0或为1的信号量。Posix信号量不必在内核中维护可以在某个信号量上执行的三种操作:1.创建一个信号量,要求调用者指定初始值,对于二值信号量来说,可以是1也可以是0;2.等待(wait)一个信号量,该操作会测试这个信号量的值,如果其值小于或等于0,那原创 2014-05-20 22:59:27 · 626 阅读 · 0 评论 -
UNIX网络编程(八)读写锁
8.1概述只要没有线程在修改原创 2014-05-19 20:09:34 · 661 阅读 · 0 评论 -
tbnet源码
转载 2014-11-02 19:37:25 · 854 阅读 · 0 评论