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