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ù)器

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

 

(2)并發(fā)服務(wù)器,為每個(gè)客戶(hù)請(qǐng)求創(chuàng)建一個(gè)進(jìn)程或線(xiàn)程

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

 

(3)預(yù)先分配子進(jìn)程或線(xiàn)程,每個(gè)子進(jìn)程或線(xiàn)程調(diào)用accept

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

3、測(cè)試用例:

客戶(hù)端代碼:

iOS培訓(xùn),Swift培訓(xùn),蘋(píng)果開(kāi)發(fā)培訓(xùn),移動(dòng)開(kāi)發(fā)培訓(xùn)

 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