我有一個運行在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