支援併發的echo伺服器(多程序版)

2021-10-06 19:53:09 字數 1415 閱讀 1997

#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來建立子程序...