UDP循環(huán)服務器 |
| 發(fā)布時間: 2012/6/19 17:30:24 |
|
UDP服務器每次從套接字上讀取一個客戶端的數(shù)據(jù)報請求,處理接收到的UDP數(shù)據(jù)報,然后將結(jié)果返回給客戶機。 創(chuàng)建UDP循環(huán)服務器的算法如下:socket(……); //創(chuàng)建一個數(shù)據(jù)報類型的套接字bind(……); //邦定公認的短口號while(1) //開始接收客戶端的連接{ //接收和處理客戶端的UDP數(shù)據(jù)報recvfrom(……);process(……);sendto(……);//準備接收下一個客戶機的數(shù)據(jù)報}因為UDP是非面向連接的,沒有一個客戶端可以獨占服務器。只要處理過程不是死循環(huán),服務器對于每一個客戶機的請求總是能夠處理的。 UDP循環(huán)服務器在數(shù)據(jù)報流量過大時由于處理任務繁重可能造成客戶技數(shù)據(jù)報丟失,但是因為UDP協(xié)議本身不保證數(shù)據(jù)報可靠到達,所以UDP協(xié)議是允許丟失數(shù)據(jù)報的。 鑒于以上兩點,一般的UDP服務器采用循環(huán)方式4、UDP并發(fā)服務器把并發(fā)的概念應用UDP就得到了并發(fā)UDP服務器,和并發(fā)TCP服務器模型一樣是創(chuàng)建子進程來處理的。 創(chuàng)建UDP并發(fā)服務器的算法如下:socket(……); //創(chuàng)建一個數(shù)據(jù)報類型的套接字bind(……); //邦定公認的短口號while(1) //開始接收客戶端的連接{ //接收和處理客戶端的UDP數(shù)據(jù)報recvfrom(……);if(fork(……)==0) //創(chuàng)建子進程{ process(……);sendto(……);}除非服務器在處理客戶端的請求所用的時間比較長以外,人們實際上很少用這種UDP并發(fā)服務器模型的。 服務器專員億恩天使QQ530997 分享 北京兆維五星級數(shù)據(jù)中心,5M獨享,1W元/年。 本文出自:億恩科技【www.artduck.net】 |
京公網(wǎng)安備41019702002023號