您必须按照以下方式做一些事情:
这是一个非常基本的答案,需要定义和原型到位,但这应该给你一个基本的选择,例如。
这段代码在freebsd、ubuntu和我的windows计算机上都有效(假设你有正确的头文件)它也被缩小并删除了一些定义,就像套接字描述符defs一样糟糕,因为那些几乎是——它就是这样。
struct timeval timeout;
int rc
fd_set wfdset,rfdset,errfdset;
//Do some checks put them in either read fdset or write fdset or error fdset
FD_SET (socket_sd, &rfdset);
timeout.tv_sec = 0;
timeout.tv_usec = 250 * 1000;
rc = select (maxfds + 1, &rfdset, &wfdset, NULL, &timeout);
//loop through the sockets and read from them at this point.
Select 可移植到 Win32 和 UNIX,但如果您在 unix IE:FreeBSD 中对套接字进行任何繁重的工作,则不推荐选择它。如果您需要更深入并更好地管理您的套接字,请使用 kqueue 或 epoll 等。