2010-06-02 95 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()套接字描述與自己的超時寫作。