2010-06-02 97 views
0

我有一个运行在linux ubuntu上的编程,它尝试使用TCP连接到服务器端口。 你能告诉我如何才能找出这是连接到Ubuntu的服务器套接字的客户端套接字的超时值?Linux上的套接字的连接超时是什么

谢谢。

回答

1

我首先看getsockopt(3)手册页(SO_RCVTIMEO)。不过,我相信你的问题比这个更重要。

+0

是的,我已经看过,但是SO_RCVTIMEO和SO_SENDTIMEO是用于send(),recv()函数调用的吗?不连接()。是对的吗? – michael 2010-06-02 21:59:32

2

最好的,便携的解决方案是使用自己的超时时间,以确保你可以依靠已知值:

1)前connect() ING,设置客户端套接字非阻塞。使用ioctl()FIONBIO标志或fcntl()O_NONBLOCK标志。在Win32下,使用ioctlsocket()FIONBIO标志。

2)connect()到远程对等体:如果connect()成功,没事,你是连接的。

3)但是,如果connect()返回-1,并设置errnoEINPROGRESSWSAEWOULDBLOCK在Win32下),只是select()套接字描述与自己的超时写作。