1.socket 函式建立套接字 lfd
2.bind 繫結位址結構
3.listen 設定監聽上限
4.迴圈監聽客戶端連線請求
5.子程序關閉lfd(用於監聽客戶端連線檔案描述符)
完成指定任務
6.父程序關閉cfd(關閉與客戶端進行資料通訊的檔案描述符)
註冊訊號捕捉函式,**子程序
使用多程序併發伺服器時要考慮以下幾點:
1.父程序最大檔案描述個數(父程序中需要close關閉accept返回的新檔案描述符)
2.系統內建立程序個數(與記憶體大小相關)
3.程序建立過多是否降低整體服務效能(程序排程)
注:如果不進行訊號捕捉 子程序**,就會產生殭屍程序
**實現(實現客戶端小寫轉大寫功能)
1.#include
2.#include
3.#include
4.#include
5.#include
6.#include
7.#include
8.#include
9.#include
10.#include
11.#include
12.#include
13.14.#include "wrap.h"
15.16.#define srv_port 9999
17.void
catch_child
(int signum)
19.18.
intmain
(int argc,
char
*ar**)
19.else
if(pid ==0)
else
69.close
(cfd)
;70.
continue
;71.
}72.
}73.
57.58.
if(pid ==0)
65.66.
for(i =
0; i < ret; i++
)67. buf[i]
=toupper
(buf[i]);
68.69.
write
(cfd, buf, ret)
;//寫回給用於與客戶端通訊的檔案描述符
70.write
(stdout_fileno, buf, ret)
;//寫至螢幕
71.}
72.} x
73.74.
return0;
75.}
併發伺服器 多程序實現
通過簡單的socket可以實現一對一的c s通訊,當多個客戶端同時進行伺服器訪問,那麼伺服器只能按序的一一進行處理,除了第乙個客戶端,其餘客戶端都會陷入等待。並且這樣的程式只能實現半雙工通訊 資料能雙向傳輸,但同一時刻只能單向傳遞,通過切換傳輸方向實現雙工 而且實現方式繁瑣,功能拘束,實用價值很低。...
linux多程序併發伺服器
多程序併發伺服器,多執行緒版 include include include include include include include include include include include 程序 函式 void recyle int num int main int argc,cha...
Web伺服器 併發伺服器 多程序(3 4 1)
目錄 在單程序的時候,相當於 是來乙個客戶,派乙個人去服務一下 效率低,現在使用多程序來服務 假設場景 100個人同時訪問頁面 單程序 一次處理,後面的會等待時間長 多程序 併發處理,一起處理 當然程序不能越多越好,硬體不支援 執行緒的開銷比程序少,但最好使用協程 注意 用process來建立子程序...