【发布时间】:2014-08-25 19:06:59
【问题描述】:
我是在 Linux 中使用套接字编程的新手,并且对进行非阻塞连接的正确方法有疑问。
我创建了一个套接字描述符并将 O_NONBLOCK 设置为非阻塞 IO。我调用connect,它返回EINPROGRESS,然后我调用select,带有一个超时值。
如何知道 connect() 操作在超时之前需要多长时间?我可以在我的程序中更改它吗?
如果我的选择操作超时,那该怎么办?关闭套接字描述符,创建另一个,然后重试连接是否正常?或者,有没有办法取消现有套接字上的连接并使用相同的套接字描述符重试操作?
谢谢。
【问题讨论】:
-
默认 connect() 系统超时通常很长,以适应通过几个拨号调制解调器、卫星和信鸽的链接。