Linux系統(tǒng)網絡服務器模型主要有兩種:并發(fā)服務器和循環(huán)服務器。
所謂并發(fā)服務器就是在同一個時刻可以處理來自多個客戶端的請求;循環(huán)服務器是指服務器在同一時刻指可以響應一個客戶端的請求。而且對于TCP和UDP套接字,這兩種服務器的實現(xiàn)方式也有不同的特點。
1、TCP循環(huán)服務器:
首先TCP服務器接受一個客戶端的連接請求,處理連接請求,在完成這個客戶端的所有請求后斷開連接,然后再接受下一個客戶端的請求。
創(chuàng)建TCP循環(huán)服務器的算法如下:socket(……); //創(chuàng)建一個TCP套接字bind(……); //邦定公認的端口號listen(……); //傾聽客戶端連接while(1) //開始循環(huán)接收客戶端連接{ accept(……);//接收當前客戶端的連接while(1)
{ //處理當前客戶端的請求read(……);process(……);write(……);} close(……); //關閉當前客戶端的連接,準備接收下一個客戶端連接} TCP循環(huán)服務器一次只處理一個客戶端的請求,如果有一個客戶端占用服務器不放時,其它的客戶機連接請求都得不到及時的響應。因此,TCP服務器一般很少用循環(huán)服務器模型的。
2、TCP并發(fā)服務器:
并發(fā)服務器的思想是每一個客戶端的請求并不由服務器的主進程直接處理,而是服務器主進程創(chuàng)建一個子進程來處理。
創(chuàng)建TCP并發(fā)服務器的算法如下:socket(……); //創(chuàng)建一個TCP套接字bind(……); //邦定公認的端口號listen(……);//傾聽客戶端連接while(1) //開始循環(huán)接收客戶端的接收{ accept(……);//接收一個客戶端的連接if(fork(……)==0) //創(chuàng)建子進程{ while(1)
3、UDP循環(huán)服務器:
4、多路復用I/O并發(fā)服務器
太長了說我字數(shù)超了,汗。留個網址吧!
本文來自: 賽微電子網-電子工程師社區(qū) 原文地址:http://www.srvee.com/embed/apply/qtLinuxczxtwlfwqgnjyl_62856.html
相關閱讀:嵌入式Linux學習步驟簡介
| 歡迎光臨 (http://m.raoushi.com/bbs/) | Powered by Discuz! X3.1 |