確定乙個或多個套介面的狀態,如:需要則等待。
#include
int pascal far select( int nfds, fd_set far* readfds, fd_set far* writefds, fd_set far* exceptfds, const struct timeval far* timeout);
nfds:是乙個整數值,是指集合中所有檔案描述符的範圍,即所有檔案描述符的最大值加1,不能錯!在windows中這個引數的值無所謂,可以設定不正確。
readfds:(可選)指標,指向一組等待可讀性檢查的套介面。
writefds:(可選)指標,指向一組等待可寫性檢查的套介面。
exceptfds:(可選)指標,指向一組等待錯誤檢查的套介面。
timeout:select()最多等待時間,對阻塞操作則為null。
///
fds_set介紹(baidu百科)
select()機制中提供一fd_set的資料結構,實際上是一long型別的陣列,每乙個陣列元素都能與一開啟的檔案控制代碼(不管是socket控制代碼,還是其他檔案或命名管道或裝置控制代碼)建立聯絡,建立聯絡的工作由程式設計師完成,當呼叫select()時,由核心根據io狀態修改fd_set的內容,由此來通知執行了select()的程序哪一socket或檔案發生了可讀或可寫事件。
結構體原型:
typedef struct fd_set fd_set;
fd_set set;
fd_zero(&set); /*將set清零使集合中不含任何fd*/
fd_set(fd, &set); /*將fd加入set集合*/
fd_clr(fd, &set); /*將fd從set集合中清除*/
fd_isset(fd, &set); /*在呼叫select()函式後,用fd_isset來檢測fd在fdset集合中的狀態是否變化返回整型,當檢測到fd狀態發生變化時返回真,否則,返回假(0)*/
以上式子中的fd為socket控制代碼。
///
#include #include#pragma comment(lib, 「ws2_32.lib」)
intmain()
//建立偵聽socket
socket slisten;
slisten = socket(af_inet, sock_stream, 0
);
if (slisten ==invalid_socket)
//填充伺服器位址結構
sockaddr_in servaddr;
servaddr.sin_family =af_inet;
servaddr.sin_addr.s_addr =inaddr_any;
servaddr.sin_port = htons(8000
);
//繫結伺服器套接字
ret = bind(slisten, (sockaddr*)&servaddr, sizeof
(servaddr));
if (ret ==socket_error)
//開始偵聽
ret = listen(slisten, 5
);
if (ret ==socket_error)
printf(」伺服器啟動成功,在埠%d監聽…\n」, ntohs(servaddr.sin_port));
//使用select模型
//建立套接字集合
fd_set allsockset; //
總的套接字集合
fd_set readset; //
可讀套接字集合
fd_set writeset; //
可寫套接字集合
fd_zero(&allsockset); //
清空套接字集合
fd_set(slisten, &allsockset); //
將slisten套接字加入套接字集合中
char bufrecv[100]; //
接收緩衝區
//進入伺服器主迴圈
while(1
)
//存在套接字的i/o已經準備好
if(ret > 0
)
else
//接收客戶端資訊
if (ret == 0
)
bufrecv[ret] = 『\0
′; printf(」收到的訊息:%s\n」, bufrecv);
} //end else}//
end if}//
end for
} //
end if
}//end while
return0;
}
使用說明 無線投屏器使用說明教程
無線投屏器使用說明教程 硬體準備 傳送端windows電腦 macos 安卓手機 平板 蘋果手機 平板 媒介 awind奇機無線投屏器 接收端 顯示大螢幕 投影機 電視機 一體機等支出hdmi或vga訊號輸入即可。前提條件 投屏的前提條件是傳送端和媒介處於同乙個區域網。使用路由器組建區域網或者裝置直...
Devcpp Dev C 使用說明及技巧
本文僅適合初學程式設計的人學習,菜鳥以上級別請飄過.dev c 是乙個windows下的c和c 程式的整合開發環境。它使用mingw32 gcc編譯器,遵循c c 標準。開發環境包括多頁面視窗 工程編輯器以及偵錯程式等,在工程編輯器中集合了編輯器 編譯器 連線程式和執行程式,提供高亮度語法顯示的,以...
rz sz安裝及使用說明
1.軟體安裝 1 編譯安裝 root 賬號登陸後,依次執行以下命令 cd tmp wget tar zxvf lrzsz 0.12.20.tar.gz cd lrzsz 0.12.20 configure make make install 上面安裝過程預設把lsz和lrz安裝到了 usr loca...