用select可以减少资源的占用,并发的处理客户端的socket连接请求。下面是一个具体的例子:
cout
<<
"
Starting Server...!
"
<<
endl;
fd_set fdSocket; // 所有可用套节字集合
FD_ZERO( & fdSocket);
FD_SET(m_sockfd, & fdSocket);
while (TRUE)
... {
// 2)将fdSocket集合的一个拷贝fdRead传递给select函数,
// 当有事件发生时,select函数移除fdRead集合中没有未决I/O操作的套节字句柄,然后返回。
fd_set fdRead = fdSocket;
if (::select(0, &fdRead, NULL, NULL, NULL) <= 0)
fd_set fdSocket; // 所有可用套节字集合
FD_ZERO( & fdSocket);
FD_SET(m_sockfd, & fdSocket);
while (TRUE)
... {
// 2)将fdSocket集合的一个拷贝fdRead传递给select函数,
// 当有事件发生时,select函数移除fdRead集合中没有未决I/O操作的套节字句柄,然后返回。
fd_set fdRead = fdSocket;
if (::select(0, &fdRead, NULL, NULL, NULL) <= 0)