練習C之SELECT形式的非阻塞IO

2021-09-07 03:45:51 字數 1771 閱讀 9167

呵呵,理解得不深,但畢竟手打全版,且無錯。但select.h不知何處找標頭檔案,

粘下來作個記錄。

poll,epoll感覺**類似,只是函式和系統實現不一樣,,epoll目前最合理的。定位精確,演算法複雜度最好。

#include "

select.h

"#include

#include

#include

#include

select.h>#include

#include

#include

in.h>#include

typedef

struct

_client client;

#define myport 59000

#define backlog 5client client[backlog];

int currentclient = 0

;#define revlen 10

char

recvbuf[revlen];

void

showclient();

intmain()

printf(

"accept started\n");

//socket

if ((socklisten = socket(af_inet, sock_stream, 0)) < 0

)

bzero(&server_addr, sizeof

(server_addr));

server_addr.sin_addr.s_addr =htonl(inaddr_any);

server_addr.sin_family =af_inet;

server_addr.sin_port =htons(myport);

//bind

if(bind(socklisten, (struct sockaddr*)&server_addr, sizeof(server_addr)) < 0

)

//listen

if(listen(socklisten, 5)< 0

)

for(i=0; i)

//select

while(1

) }}

timeout.tv_sec = 3

; timeout.tv_usec = 0

; ret = select((int)sockmax+1, &readfds, null, null, &timeout);

if(ret < 0

)

else

if(ret == 0

)

printf(

"test111\n");

for(i=0; i)

else

if(ret < 0

)

recvlen = recvlen +ret;

if(recvlen else}}

}}

if(fd_isset(socklisten, &readfds))

else

for(i=0; i< backlog; i++)}}

}printf(

"test\n");

return0;

}void

showclient()

printf("\n

");}

練習C之SELECT形式的非阻塞IO

呵呵,理解得不深,但畢竟手打全版,且無錯。但select.h不知何處找標頭檔案,粘下來作個記錄。poll,epoll感覺 類似,只是函式和系統實現不一樣,epoll目前最合理的。定位精確,演算法複雜度最好。include select.h include include include includ...

快速排序的遞迴形式與非遞迴形式 C 版

快排的理解 設要排序的陣列是 a 0 a n 1 首先任意選取乙個資料 通常選用陣列的第乙個數 作為關鍵資料,然後將所有比它小的數都放到它前面,所有比它大的數都放到它後面,這個過程稱為一趟快速排序。值得注意的是,快速排序不是一種穩定的排序演算法,也就是說,多個相同的值的相對位置也許會在演算法結束時產...

非阻塞式Socket之select的DEMO實現

select server.c include include include include include include define bool int define true 1 define false 0 define myport 8888 define backlog 5 how m...