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