1、前言
網(wǎng)絡(luò)編程分為客戶(hù)端和服務(wù)端,服務(wù)器通常分為迭代服務(wù)器和并發(fā)服務(wù)器。并發(fā)服務(wù)器可以根據(jù)多進(jìn)程或多線(xiàn)程進(jìn)行細(xì)分,給每個(gè)連接創(chuàng)建一個(gè)獨(dú)立的進(jìn)程或線(xiàn)程,或者預(yù)先分配好多個(gè)進(jìn)程或線(xiàn)程等待連接的請(qǐng)求。今天探討三種設(shè)計(jì)范式
(1)迭代服務(wù)器
(2)并發(fā)服務(wù)器,為每個(gè)客戶(hù)請(qǐng)求創(chuàng)建一個(gè)進(jìn)程或線(xiàn)程
(3)預(yù)先分配子進(jìn)程或線(xiàn)程,每個(gè)子進(jìn)程或線(xiàn)程調(diào)用accept
3、測(cè)試用例:
客戶(hù)端代碼:
1 #include <sys/wait.h> 2 #include <string.h> 3 #include <errno.h> 4 #include <netdb.h> 5 #include <stdlib.h> 6 7 #define IP "127.0.0.1" 8 #define PORT 8888 9 #define WORKER 410 #define MAXIN 409611 #define MAXLINE 409612 13 int tcp_connect(const char *host, const char *port)14 {15 if (host == NULL || port == NULL) {16 return -1;17 }18 int sockfd, n;19 struct