所謂並發服務器就是在同一個時刻可以處理來自多個客戶端的請求;循環服務器是指服務器在同一時刻只可以響應一個客戶端的請求。而且對於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(……);