#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
// 程序**函式
void recyle(int num)
}int main(int argc, const char* ar**)
struct sockaddr_in serv_addr;
socklen_t serv_len = sizeof(serv_addr);
int port = atoi(ar**[1]);
// 建立套接字
int lfd = socket(af_inet, sock_stream, 0);
// 初始化伺服器 sockaddr_in
memset(&serv_addr, 0, serv_len);
serv_addr.sin_family = af_inet; // 位址族
serv_addr.sin_addr.s_addr = htonl(inaddr_any); // 監聽本機所有的ip
serv_addr.sin_port = htons(port); // 設定埠
// 繫結ip和埠
bind(lfd, (struct sockaddr*)&serv_addr, serv_len);
// 設定同時監聽的最大個數
listen(lfd, 36);
printf("start accept ......\n");
// 使用訊號**子程序pcb
struct sigaction act;
act.sa_handler = recyle;
act.sa_flags = 0;
sigemptyset(&act.sa_mask);
sigaction(sigchld, &act, null);
struct sockaddr_in client_addr;
socklen_t cli_len = sizeof(client_addr);
while(1)
printf("connect sucessful\n");
// 建立子程序
pid_t pid = fork();
if(pid == 0)
else if(len == 0)
else
}// 乾掉子程序
return 0;
}else if(pid > 0)
}close(lfd);
return 0;
}
併發伺服器 多程序實現
通過簡單的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來建立子程序...