select()用法
標頭檔案
#include #include#include
定義函式
select()用來等待檔案描述詞狀態的改變。
intselect(int n, fd_set * readfds, fd_set * writefds, fd_set * exceptfds, struct timeval * timeout);
n:代表最大的檔案描述詞加1;
readfds、writefds 和exceptfds:稱為描述片語,是用來回傳該描述詞的讀,寫或例外的狀況。
底下的巨集提供了處理這三種描述片語的方式:
fd_clr(inr fd,fd_set* set); //用來清除描述片語set中相關fd 的位
fd_isset(int fd,fd_set *set); //
用來測試描述片語set中相關fd 的位是否為真
fd_set(int fd,fd_set*set); //
用來設定描述片語set中相關fd的位
fd_zero(fd_set *set); //
用來清除描述片語set的全部位
timeout為結構timeval,用來設定select()的等待時間,其結構定義如下:
structtimeval
;
返回值
如果引數timeout設為null,則表示select沒有timeout。
1. 執行成功則返回檔案描述詞狀態已改變的個數;
2. 如果返回0代表在描述詞狀態改變前已超過timeout時間;
3. 當有錯誤發生時則返回-1,錯誤原因存於errno,此時引數readfds,writefds,exceptfds和timeout的值變成不可**。
ebadf //檔案描述詞為無效的或該檔案已關閉
eintr //
此呼叫被訊號所中斷
einval //
引數n 為負值。
enomem //
核心記憶體不足
select使用
例子:
#include #include#include
#include
#include
#include
#include
intmain()
printf(
"hehethe input is %c\n
",c );
if( '
q' == c ) //
輸入q結束}}
}
select網路通訊02
client02 define win32 lean and mean define crt secure no warnings include include include include using namespace std pragma comment lib,ws2 32.lib 動態...
C 網路通訊
c 網路通訊 一 伺服器端程式 10.17 1.建立伺服器端socket 1 使用socket類 建立伺服器socket物件 socket objs new socket 引數 使用ipendpoint類設定伺服器ip位址和埠號 或使用dns類 ipaddress serip ipaddress.p...
Winsock網路通訊
winsock網路通訊 這裡我希望和大家 一下winsock網上通訊的程式,由於網際網路的普及,越來越多的程式具有了在網上與其他程式通訊的功能.其實所有這些功能都建立在winsock介面之上,應用程式執行大多數網路通訊的基本物件稱為套介面或軟插口 socket 使用mfc winsocket類新增網...