Linux系统网络服务器模型主要有两种:并发服务器和循环服务器。
所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻指可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点。
1、TCP循环服务器:
首先TCP服务器接受一个客户端的连接请求,处理连接请求,在完成这个客户端的所有请求后断开连接,然后再接受下一个客户端的请求。
创建TCP循环服务器的算法如下:socket(……); //创建一个TCP套接字bind(……); //邦定公认的端口号listen(……); //倾听客户端连接while(1) //开始循环接收客户端连接{ accept(……);//接收当前客户端的连接while(1)
{ //处理当前客户端的请求read(……);process(……);write(……);} close(……); //关闭当前客户端的连接,准备接收下一个客户端连接} TCP循环服务器一次只处理一个客户端的请求,如果有一个客户端占用服务器不放时,其它的客户机连接请求都得不到及时的响应。因此,TCP服务器一般很少用循环服务器模型的。
2、TCP并发服务器:
并发服务器的思想是每一个客户端的请求并不由服务器的主进程直接处理,而是服务器主进程创建一个子进程来处理。
创建TCP并发服务器的算法如下:socket(……); //创建一个TCP套接字bind(……); //邦定公认的端口号listen(……);//倾听客户端连接while(1) //开始循环接收客户端的接收{ accept(……);//接收一个客户端的连接if(fork(……)==0) //创建子进程{ while(1)
3、UDP循环服务器:
4、多路复用I/O并发服务器
太长了说我字数超了,汗。留个网址吧!
本文来自: 赛微电子网-电子工程师社区 原文地址:http://www.srvee.com/embed/apply/qtLinuxczxtwlfwqgnjyl_62856.html
相关阅读:嵌入式Linux学习步骤简介
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |