呵呵,理解得不深,但畢竟手打全版,且無錯。但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...