伺服器按照處理方式來看可以分為:
迭代伺服器只能一次處理乙個客戶的請求。也就是說在伺服器響應乙個客戶請求時,如果有另乙個客戶發起請求是不能得到及時響應的。下圖是乙個典型的迭代伺服器處理流程。
併發伺服器則能同時處理多個客戶端請求。下圖是乙個基於多程序模型的併發伺服器處理流程。
原始碼可以到: github連線
伺服器端原始碼:
#include
#include /* see notes */
#include
#include
#include
#include
#define serv_port 8000
#define maxline 1024
int main()
printf("client: %s\t port: %d\n",
inet_ntop(af_inet, &clientaddr.sin_addr, str, sizeof(str)),
ntohs(clientaddr.sin_port));
i = 0;
while(i < revlen)
write(confd, buf, revlen);
}close(confd);
return
0; }
else
if(pid > 0)
else
}close(fd);
return
0;}
測試用客戶端原始碼:
#include
#include
#include
#include
#include
#include
#define maxline 80
#define serv_port 8000
int main(int argc, char *argv)
//5. 關閉套接字描述符
close(sockfd);
return
0;}
linux系統程式設計 多程序
最近發現每天都在寫業務 好多基礎的東西都忘了,今天開始每天覆習一點基礎知識。今天先複習多程序 程序是具有一定功能的程式的一次執行活動,是系統資源分配和排程的基本單位 孤兒程序 父程序退出,子程序沒有退出,被init程序收養 init程序 是核心啟動後執行的第乙個程序,是所有孤兒程序的子程序。init...
unix系統程式設計
popen pclose popen介面定義 include file popen const char command,const char type int pclose file stream popen函式會建立乙個管道,並且建立乙個子程序來執行shell,shell會建立乙個子程序來執行c...
UNIX網路程式設計 併發伺服器(多程序)
以下程式的源 均是unix網路程式設計上的例子程式。intro daytimetcpsrv1.c include unp.h include include apueerror.h int main int argc,char argv tcp一般採用併發伺服器。當服務乙個客戶請求可能花費較長時間時...