linux學習之多高併發伺服器篇(一)

2021-09-01 11:27:51 字數 1957 閱讀 8282

高併發伺服器

高併發伺服器

併發伺服器開發

1.多程序併發伺服器   使用多程序併發伺服器時要考慮以下幾點:

server

/* server.c */

#include #include #include #include #include #include #include #include "wrap.h"

#define maxline 80

#define serv_port 8000

void do_sigchild(int num)

int main(void)

printf("received from %s at port %d\n",

inet_ntop(af_inet, &cliaddr.sin_addr, str, sizeof(str)),

ntohs(cliaddr.sin_port));

for (i = 0; i < n; i++)

buf[i] = toupper(buf[i]);

write(connfd, buf, n);

}close(connfd);//若不關長期以往會導致文見檔案描述符關閉

return 0;

}else if (pid > 0)

else

perr_exit("fork");}}

client

#include #include #include #include #include "wrap.h"

#define maxline 80

#define serv_port 8000

int main(int argc, char *argv)

close(sockfd);

return 0;

}

2.多執行緒併發伺服器   在使用執行緒模型開發伺服器時需考慮以下問題:

多執行緒server

/* server.c */

#include #include #include #include #include #include "wrap.h"

#define maxline 80

#define serv_port 8000

struct s_info ;

void *do_work(void *arg)

printf("received from %s at port %d\n",

inet_ntop(af_inet, &(*ts).cliaddr.sin_addr, str, sizeof(str)),

ntohs((*ts).cliaddr.sin_port));

for (i = 0; i < n; i++)

buf[i] = toupper(buf[i]);

write(ts->connfd, buf, n);

}close(ts->connfd);

}int main(void)

return 0;

}

client

/* client.c */

#include #include #include #include #include "wrap.h"

#define maxline 80

#define serv_port 8000

int main(int argc, char *argv)

close(sockfd);

return 0;

}

**

linux網路程式設計之多程序併發伺服器

1 使用多程序併發伺服器考慮的因素 1 父程序描述最大檔案描述符的個數 父程序需要關閉accept返回的新檔案描述符 2 系統內可建立程序的個數 與記憶體大小相關 3 程序建立過多是否降低整體服務效能 2 多程序建立併發伺服器思想 1 父程序建立子程序,每個子程序相當於乙個客戶端 2 子程序實現每個...

網路程式設計之 多執行緒併發伺服器

思路 迴圈等待連線,連線成功後建立乙個子執行緒處理該連線的資料通訊,然後主線程繼續等待連線。socket介面封裝 include wrap.h include include include void sys err const char ch intsocket int domain,int ty...

併發伺服器

併發伺服器 伺服器使用多個控制線程,同時處理多個客戶請求。有關併發執行的細節取決於所用作業系統。但其思路很簡單 併發伺服器程式被分為主程式 執行緒 和控制代碼兩部分,主程式只接受來自客戶的連線請求,並為該客戶建立乙個控制線程 每乙個控制線程只與乙個客戶互動,並執行控制代碼程式。當處理完乙個客戶後,該...