我的疑問是這樣的:connect()先發(fā)出請求,然后呢?是不是等待回饋信息?收到回饋信息后(成功連接),才結束函數(shù)?那么我想問回饋信息是什么呢?他是單一的告知成功連接,還是說附帶了具體內容直接給rev接受?就是說,成功連接的告知跟服務器具體內容的發(fā)送,是同時一起發(fā)的,還是說connect接受了成功連接告知后,結束函數(shù),然后服務器再發(fā)送具體內容數(shù)據(jù)?
2 回答

神不在的星期二
TA貢獻1963條經驗 獲得超6個贊
你的理解好像錯了。
你要使用listen先建立服務端,然后使用connect讓客戶端連接到服務端。
服務端和客戶端連接建立后,你可以使用send / recv 進行通信了。

精慕HU
TA貢獻1845條經驗 獲得超8個贊
TCP的連接建立需要進行3次握手,你可以百度下:“TCP3次握手”看看對這個更詳細的說明。
所以connect就是做這樣3個工作:
發(fā)出sync包(就是請求建立連接)
等待sync-ack包(就是服務器的響應,允許建立連接),對此要么是等到服務器的ack包,那么進行第3步,要么是收到服務器地址不可達或者返回端口不可用的錯誤或者是在規(guī)定時間內沒有受到服務器的響應那么就超時,不論如何,后面的錯誤會導致connect錯誤返回
connect函數(shù)發(fā)出ack包,表明連接正式建立,然后函數(shù)正確返回
至于數(shù)據(jù)到底是客戶端先發(fā)出還是服務器端先發(fā)出,是由應用決定的,也就是在connect之后發(fā)生的。所以跟connect沒有關系。connect之后你是想要recv還是send,隨便你。
添加回答
舉報
0/150
提交
取消