TCP的連接建立需要進行3次握手,妳可以百度下:“TCP3次握手”看看對這個更詳細的說明。
所以connect就是做這樣3個工作:
發出sync包(就是請求建立連接)
等待sync-ack包(就是服務器的響應,允許建立連接),對此要麽是等到服務器的ack包,那麽進行第3步,要麽是收到服務器地址不可達或者返回端口不可用的錯誤或者是在規定時間內沒有受到服務器的響應那麽就超時,不論如何,後面的錯誤會導致connect錯誤返回
connect函數發出ack包,表明連接正式建立,然後函數正確返回
至於數據到底是客戶端先發出還是服務器端先發出,是由應用決定的,也就是在connect之後發生的。所以跟connect沒有關系。connect之後妳是想要recv還是send,隨便妳。