我有一个运行在linux ubuntu上的编程,它尝试使用TCP连接到服务器端口。 你能告诉我如何才能找出这是连接到Ubuntu的服务器套接字的客户端套接字的超时值?Linux上的套接字的连接超时是什么
谢谢。
我有一个运行在linux ubuntu上的编程,它尝试使用TCP连接到服务器端口。 你能告诉我如何才能找出这是连接到Ubuntu的服务器套接字的客户端套接字的超时值?Linux上的套接字的连接超时是什么
谢谢。
我首先看getsockopt(3)
手册页(SO_RCVTIMEO)。不过,我相信你的问题比这个更重要。
最好的,便携的解决方案是使用自己的超时时间,以确保你可以依靠已知值:
1)前connect()
ING,设置客户端套接字非阻塞。使用ioctl()
和FIONBIO
标志或fcntl()
和O_NONBLOCK
标志。在Win32下,使用ioctlsocket()
和FIONBIO
标志。
2)connect()
到远程对等体:如果connect()
成功,没事,你是连接的。
3)但是,如果connect()
返回-1,并设置errno
到EINPROGRESS
(WSAEWOULDBLOCK
在Win32下),只是select()
套接字描述与自己的超时写作。
是的,我已经看过,但是SO_RCVTIMEO和SO_SENDTIMEO是用于send(),recv()函数调用的吗?不连接()。是对的吗? – michael 2010-06-02 21:59:32