/dev/poll和kqueue都是类似于epoll的技术,解决select/poll的效率问题,分别是Solaries和FreeBSD的技术 。
Connect超时时间是由系统决定的,recv和send的超时可以 SO_RCVTIMEO and SO_SNDTIMEO 决定,select和epoll可以设置超时时间。当然这都是针对block的socket的。
用 fcntl 设置non block。那么accept,connect,read,write都是不会等待资源到位的,所以要先用select/epoll检查是否符合条件。这就是我以前程序对connect的socket在连接成功之后再设置成non block的解释。 要想设置conect的超时时间可以通过设置它为non blcok,connect如果返回EINPROGRESS就加上select(time)的方式实现,否则就是成功了。
本文介绍了在Socket编程中如何通过设置非阻塞模式和使用Select/Epoll等技术来解决Connect、Recv和Send操作的超时问题。探讨了不同系统下如Solaries和FreeBSD对于高效I/O的支持技术,并解释了非阻塞模式下如何实现Connect操作的超时。
869

被折叠的 条评论
为什么被折叠?



