linux tcp 服务器编程系列
shallnet
一个没赶上脑残一代90后的80后程序猿!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux TCP 服务器编程(三):信号处理
【版权声明:转载请保留出处:blog.youkuaiyun.com/gentleliu。邮箱:shallnew*163.com】 上一节说到我们不愿意留存僵死进程,它会占用内核空间,最终可能导致资源耗尽。所以我们无论何时fork子进程时都要wait他们,以防止变成僵死进程。因此我们建立一个处理SIGCHLD信号的处理函数。 我们可以调用wait和waitpid函数来处理已经终止的子进程: #in原创 2014-01-01 18:11:14 · 2229 阅读 · 0 评论 -
Linux TCP 服务器编程(五):端口重用及TIME_WAIT
上一节说到设置套接字选项的问题,我们这一节主要处理上一节说的“Address already in use”问题,这个问题通过设置设置一个套接字选项来解决。 这个错误提示是在bind函数调用时发生的,bind函数经常遇到这个问题:试图绑定一个已经在使用的端口。但是我们已经明确关闭进程了,这是有套接字状态TIME_WAIT引起的,该状态在套接字关闭后几分钟仍保留,在TIME_WAIT状态退出之后,原创 2014-01-01 18:28:26 · 4174 阅读 · 0 评论 -
Linux TCP 服务器编程(四):I/O复用
前面我们的服务器使用多进程来实现并发,但是这样会有一个问题,就是在同时有很多客户端连接时,服务器在每一个客户连接时就会新建一个进程,最后会产生很多进程,这样会占用很多系统资源。下面我们来实现一个单进程服务器处理多个客户端连接的程序。这涉及到I/O复用。进程需要一种预先告知内核的能力,当内核发现进程指定的一个或多个I/O条件就绪,他就会通知进程,这个能力称为I/O 复用。 我们先说select系统原创 2014-01-01 18:18:46 · 1965 阅读 · 1 评论 -
Linux TCP 服务器编程(二):简单的并发服务器
【版权声明:转载请保留出处:blog.youkuaiyun.com/gentleliu。邮箱:shallnew*163.com】 在讲述并发服务器之前,需要先了解一下fork函数。 #include pid_t fork(void); 该函数很特殊,调用一次返回2次:在父进程中返回一次,返回的是子进程的ID号;在子进程中再返回一次,返回值为0; 父进程中打开的所有描述符在fork之后与子进原创 2014-01-01 17:49:02 · 1997 阅读 · 0 评论 -
linux TCP 服务器编程(一):简单的迭代服务器
要说linux tcp服务器编程,首先需要讲一下网络编程中一些使用到的重要又基本的结构体和函数。\ 结构体: IPv4套接字地址结构struct sockaddr_in,定义在头文件中,详细如下: typedef uint32_t in_addr_t; typedef uint16_t in_port_t; typedef unsigned short sa_family_原创 2014-01-01 17:14:03 · 6914 阅读 · 0 评论 -
Linux TCP 服务器编程(六):基于线程的并发服务器
之前我们讲到基于进程的并发服务器,和I/O复用的服务器,这一节我们说一下基于线程的并发服务器编程,该方法结合了基于进程和基于I/O多路复用的特性。同进程一样,线程由内核自动调度,并且内核通过一个整数ID来识别线程,但线程的上下文要比一个进程的上下文小的多,线程的上下文切换要比进程的上下文切换快的多。同基于I/O多路复用一样,多个线程运行在单一进程的上下文中,因此共享这个进程虚拟地址空间的整个内容,原创 2014-01-05 22:14:03 · 1875 阅读 · 0 评论
分享