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.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |