我读过,我可以使套接字成为非阻塞并使用 select(),并为 传递超时值
select(),但我正在寻找阻塞套接字的解决方案。
您可以在阻塞套接字上执行此操作:
sock = socket(...);
bind(sock, ...);
listen(sock, ...);
while (program_running())
{
timeval timeout = {1, 0};
fd_set fds;
FD_ZERO(&fds);
FD_SET(sock, &fds);
select(sock+1, &fds, NULL, NULL, &timeout);
if (FD_ISSET(sock, &fds))
{
client = accept(sock, ...);
// do things with client
}
Run Code Online (Sandbox Code Playgroud)
来自MSDN 接受函数文档:
参数 readfds 标识要检查可读性的套接字。如果套接字当前处于侦听状态,并且已接收到传入连接请求,则它将被标记为可读,从而保证接受完成而不会阻塞。
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |