国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

Hi,歡迎來(lái)到嵌入式培訓(xùn)高端品牌 - 華清遠(yuǎn)見(jiàn)教育科技集團(tuán)<北京總部官網(wǎng)>,專注嵌入式工程師培養(yǎng)15年!
當(dāng)前位置: > 華清遠(yuǎn)見(jiàn)教育科技集團(tuán) > 嵌入式學(xué)習(xí) > 講師博文 > connect函數(shù)的用法
connect函數(shù)的用法
時(shí)間:2017-01-04作者:華清遠(yuǎn)見(jiàn)

在網(wǎng)絡(luò)編程中,connect函數(shù)經(jīng)常用來(lái)在套接字上初始化連接。無(wú)論是流式套接字還是數(shù)據(jù)報(bào)套接字都可以使用connect函數(shù),但含義卻不一樣。下面我們分別來(lái)討論一下:

一、 流式套接字

流式套接字通常使用的是面向連接的協(xié)議,如TCP協(xié)議。該類型套接字在雙方通信之前要先建立連接。具體說(shuō)就是服務(wù)器端創(chuàng)建監(jiān)聽(tīng)套接字并綁定地址,客戶端調(diào)用connect函數(shù)建立連接。該函數(shù)原型如下:

int connect(int sockfd, const struct sockaddr &serv_addr, socklen_t addr_len);

sockfd是客戶端創(chuàng)建的流式套接字;serv_addr指向存放服務(wù)器地址信息的結(jié)構(gòu)體;addr_len是該結(jié)構(gòu)體的長(zhǎng)度。

實(shí)際上,我們通過(guò)抓包分析可以得知:客戶端和服務(wù)器端通過(guò)如下三次握手后即建立好了連接。

                    SYN
        客戶端 -----------------> 服務(wù)器端
                            ACK,SYN
        服務(wù)器端 -----------------> 客戶端
                            ACK
        客戶端 -----------------> 服務(wù)器端

一旦建立好連接,客戶端就可以通過(guò)該套接字和服務(wù)器端通信了。需要注意的是:因?yàn)槭墙⒑昧诉B接,所以使用send/recv發(fā)送/接收數(shù)據(jù),無(wú)需指定對(duì)方
的地址。但一個(gè)套接字只能connect一次。如果客戶端要和其他的服務(wù)器通信的話,必須再創(chuàng)建一個(gè)流式套接字,重新連接。

二、 數(shù)據(jù)報(bào)套接字

數(shù)據(jù)報(bào)套接字通常使用的是無(wú)連接的協(xié)議。該類套接字在雙方通信之前不用先建立連接,可以直接使用sendto/recvfrom收發(fā)數(shù)據(jù)。但在發(fā)送數(shù)據(jù)時(shí)必須指定對(duì)方的地址;在接收數(shù)據(jù)時(shí)通常也需要保存對(duì)方的地址。

看到這里大家應(yīng)該發(fā)現(xiàn)了流式套接字和數(shù)據(jù)報(bào)套接字的一個(gè)區(qū)別:前者只能和一方通信;后者可以和多方通信。

數(shù)據(jù)報(bào)套接字同樣可以使用connect函數(shù),但含義并不是建立連接而是限定該套接字只和指定的一方通信。即未使用connect之前,可以和任意的地址通信;而connect之后只能和一方通信。

一旦connect之后,數(shù)據(jù)報(bào)套接字也可以使用send/recv收發(fā)數(shù)據(jù)了。如果想和其他的地址通信的話,可以重新connect指定新的地址。

發(fā)表評(píng)論
評(píng)論列表(網(wǎng)友評(píng)論僅供網(wǎng)友表達(dá)個(gè)人看法,并不表明本站同意其觀點(diǎn)或證實(shí)其描述)