简单的并发服务器
来源:互联网 发布:手机联系人数据恢复 编辑:程序博客网 时间:2024/05/01 07:44
简单的并发服务器
UNIX下编写简单的并发服务器最简单的方法就是fork一个子进程来服务每个客户。
pid_t pid;
int listenfd, connfd;
listenfd = socket();
bind(listenfd, );
listen(listenfd, LISTENQ)
for(; ;)
{
connfd = accpet(listenfd, );
if((pid = fork()) == 0)
{
close(listenfd);
doit(connfd);
close(connfd);
exit(0);
}
close(connfd);
}
当一个连接建立时,accpet返回,服务器紧跟着调用fork,然后父进程关闭已连接套接字子进程关闭监听套接字。
为什么父进程调用close(connfd)没有终止子进程与客户的连接呢?
这就要理解APUE上讲的fork函数了,每个文件或者套接字都有一个引用计数,引用计数在文件表项中维护。他是当前打开着的引用该文件或套接字描述符的个数。
在本例中,socket函数返回后与listenfd关联的引用计数为1.在accept函数返回后与connfd关联的引用计数也为1.在fork函数返回后与listenfd和connfd关联的引用计数为2.当父进程关闭connfd时只是将他的引用计数从2减为1.该套接字的真正清理和资源释放都是在引用计数减为0的时候进行。
- 简单的并发服务器
- 简单的并发服务器
- Linux TCP 服务器编程(二):简单的并发服务器
- 一个简单的基于select的并发服务器
- 自己实现一个简单的支持并发的Web服务器
- 带你实现一个简单的MyApacheTomcat,迷你并发服务器
- TCP套接字编程实现简单的并发服务器
- UNIX网络编程笔记(3):简单的并发服务器
- 一个简单的高并发的回应服务器(5万并发)
- 一个简单的高并发的回应服务器(5万并发)
- 并发服务器的设计
- 并发服务器的实现
- fork()理解及简单并发服务器应用
- fork()理解及简单并发服务器应用
- Linux网络编程之简单并发服务器
- Linux网络编程之简单并发服务器
- Linux网络编程之简单并发服务器
- 网络编程学习_简单的多进程并发服务器/客户端
- 将二叉搜索树转成要一个排序的双向链表
- MySQL数据库连接池
- Volley异常Volley NetworkDispatcher.run: Unhandled exception java.lang.NullPointerException
- 去掉EditText的边框和下滑线
- Android中获取手机通信录中的联系人
- 简单的并发服务器
- iOS 把汉字转换成拼音并截取拼音第一个字母
- 一步——让你将Eclipse项目转换成Android Studio项目!!!
- html 双色表格样式设计
- Intent——把两个Activity关联起来!
- DuiLib学习(五)
- Jetty创建默认应用配置
- iOS类目、延展和协议
- WEBRTC 线程类