接受错误:资源暂时不可用
发布时间:2020-12-16 05:28:33 所属栏目:百科 来源:网络整理
导读:我试图在C中创建单线程服务器(red-hut),它将监听多个套接字. 当我将标志设置为非阻塞时,我需要使用非阻塞套接字,如下所示: int flagss = fcntl(socketfds[j],F_GETFL,0); flagss |= O_NONBLOCK;fcntl(socketfds[j],F_SETFL,flagss); 我明白了: ERROR on ac
我试图在C中创建单线程服务器(red-hut),它将监听多个套接字.
当我将标志设置为非阻塞时,我需要使用非阻塞套接字,如下所示: int flagss = fcntl(socketfds[j],F_GETFL,0); flagss |= O_NONBLOCK; fcntl(socketfds[j],F_SETFL,flagss); 我明白了: ERROR on accept: Resource temporarily unavailable 否则一切都很完美. 解决方法
资源暂时不可用是EAGAIN,这不是一个真正的错误.这意味着“我现在没有你的答案,你告诉我不要等,所以我在这里回答没有答案.”
如果您将侦听套接字设置为非阻塞,则在没有客户端尝试连接时,应该将errno设置为该值.您可以使用select(传统)或poll(语义等效,更新的接口,首选,除非您需要在没有它的情况下在某些旧的unix上运行)或epoll(针对数千个描述符,特定于Linux的)系统调用进行优化等待传入连接. 当然,您将使用poll(或任何替代方法)等待侦听套接字或任何数据套接字上的数据. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |