多路復用 迴圈伺服器模型

2021-05-27 17:09:52 字數 941 閱讀 5083

#include "header.h"

typedef struct sockaddr sa;

#define maxline 1024

int main(void)

memset(&server_addr,0,sizeof(server_addr));

server_addr.sin_family = af_inet;

server_addr.sin_port = htons(8000);

server_addr.sin_addr.s_addr = inet_addr("127.0.0.1");

if(bind(listen_fd,(sa *)&server_addr,sizeof(server_addr)) == -1)

if(listen(listen_fd,10) == -1)

int i;

memset(buf,'\0',sizeof(buf));

while(1)

printf("select after\n");

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

if(i == listen_fd)

printf("connect from client ip %s"

,inet_ntoa(client_addr.sin_addr));

printf("client port %d\n",ntohs(client_addr.sin_port));

memset(buf,'\0',sizeof(buf));

read(connect_fd,buf,sizeof(buf));

printf("read from client:%s\n",buf);}}

} close(connect_fd);

} close(listen_fd);

}

多路復用伺服器網路模型

多路復用的方式是真正實用的伺服器程式,非多路復用的網路程式只能作為學習或著陪測的角色。本文說下個人接觸過的多路復用函式 select poll epoll port。kqueue的 nix系統沒接觸過,估計熟悉了上面四種,kqueue也只是需要熟悉一下而已。一 select模型 select原型 理...

IO多路復用併發伺服器

伺服器呼叫select函式檢測兩種不同型別的輸入事件 1 新的客戶端請求到達,此時監聽描述符準備好可以讀了 伺服器開啟連線並將該客戶新增到池裡 2 乙個已存在的客戶端的已連線描述符準備好可以讀了 伺服器把來自每個已經準備好的已連線描述符的乙個文字行回送回去 當且僅當乙個從該描述符讀取乙個位元組的請求...

IO模型 多路復用

乙個輸入操作通常包括兩個階段 應用程序被阻塞,直到資料從核心緩衝區複製到應用程序緩衝區中才返回。應該注意到,在阻塞的過程中,其它應用程序還可以執行,因此阻塞不意味著整個作業系統都被阻塞。因為其它應用程序還可以執行,所以不消耗 cpu 時間,這種模型的 cpu 利用率會比較高。應用程序執行系統呼叫之後...