UNIX網絡編程--實現併發UDP服務器

大多數UDP服務器程序是迭代運行的,即服務器等待一個客戶請求,讀入這個請求,處理這個請求,送回其應答,接着等待下一個客戶請求。然而當客戶請求的處理需消耗用過長時間時,我們就得設計一個併發的UDP服務器。以下爲實現的方法:

 1. 該方法比較簡單,讀入一個客戶請求併發送一個應答後,與這個客戶就不再相關了。這種情形下,讀入客戶請求的服務器可以fork一個子進程並讓子進程去處理該請求。該“請求”(即請求數據報的內容以及含有客戶協議地址的套接口地址結構)通過fork複製的內存映像傳遞給子進程。子進程然後把它的應答直接發送給客戶。實現看下圖


 2. 該方法與客戶交換多個數據報。讓服務器爲每個用戶創建一個新的套節口,在其上bind一個臨時端口,然後使用該socket發送對於該客戶的所有應答,這個辦法要求客戶查看服務器第一個應答中的源端口號,並把本請求的後續數據報發送給該端口。實現看下圖


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章