我刚接触Linux中的套接字编程,关于如何正确地进行非阻塞连接,有一个问题。
我创建了一个套接字描述符,并设置了O_NONBLOCK以进行非阻塞IO。我调用connect函数,它返回EINPROGRESS,然后我使用超时值调用select函数。
在超时之前,我怎样才能知道connect()操作需要多长时间?我是否可以在程序中更改这个时间?
如果我的select操作超时了,那该怎么办?关闭套接字描述符、创建另一个并重试连接是正常的吗?还是有一种方法可以取消现有套接字上的连接并使用相同的套接字描述符重试操作?
谢谢。