久久婷婷香蕉热狠狠综合,精品无码国产自产拍在线观看蜜,寡妇房东在做爰3,中文字幕日本人妻久久久免费,国产成人精品三上悠亚久久

Hi,歡迎來到嵌入式培訓高端品牌 - 華清遠見教育科技集團<北京總部官網>,專注嵌入式工程師培養15年!
當前位置: > 華清遠見教育科技集團 > 嵌入式學習 > 講師博文 > connect函數的用法
connect函數的用法
時間:2017-01-04作者(zhe):華清遠見(jian)

在網絡編程中(zhong),connect函數經常用來在套(tao)接(jie)字(zi)上初始(shi)化(hua)連接(jie)。無(wu)論(lun)是流式套(tao)接(jie)字(zi)還是數據報套(tao)接(jie)字(zi)都可以使用connect函數,但含義卻(que)不一(yi)(yi)樣(yang)。下(xia)面我們分別來討論(lun)一(yi)(yi)下(xia):

一、 流式(shi)套(tao)接字

流式(shi)套接(jie)(jie)(jie)(jie)字(zi)(zi)通(tong)常(chang)使用的是(shi)(shi)面向連接(jie)(jie)(jie)(jie)的協(xie)議(yi)(yi),如(ru)TCP協(xie)議(yi)(yi)。該類型套接(jie)(jie)(jie)(jie)字(zi)(zi)在(zai)雙方通(tong)信之前要(yao)先建(jian)立連接(jie)(jie)(jie)(jie)。具(ju)體說就是(shi)(shi)服務器端創建(jian)監聽(ting)套接(jie)(jie)(jie)(jie)字(zi)(zi)并綁定地址,客戶端調用connect函(han)數建(jian)立連接(jie)(jie)(jie)(jie)。該函(han)數原型如(ru)下:

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

sockfd是(shi)客(ke)戶(hu)端(duan)創建的(de)流(liu)式套接字;serv_addr指向存放服務(wu)器地址(zhi)信(xin)息的(de)結(jie)構體;addr_len是(shi)該結(jie)構體的(de)長(chang)度。

 實際上,我們通過抓包分析可以(yi)得知:客戶端(duan)和服(fu)務器端(duan)通過如下三次握手后即建立好(hao)了(le)連接(jie)。

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

一旦建立好連接,客戶端就可以通過該套接字和服務器端通信了。需要注意的是:因為是建立好了連接,所以使用send/recv發送/接收數據,無需指定對方
的(de)地(di)址。但一個套(tao)(tao)接(jie)字(zi)只能connect一次。如果客戶端(duan)要和其他的(de)服務(wu)器(qi)通(tong)信的(de)話(hua),必(bi)須(xu)再創建一個流式套(tao)(tao)接(jie)字(zi),重新連接(jie)。

二(er)、 數據報套接(jie)字

數(shu)(shu)(shu)據報套接字通(tong)常使用的(de)是無連接的(de)協議(yi)。該(gai)類套接字在雙方(fang)通(tong)信之前(qian)不用先建立連接,可以(yi)直(zhi)接使用sendto/recvfrom收發數(shu)(shu)(shu)據。但在發送數(shu)(shu)(shu)據時必須(xu)指定對(dui)方(fang)的(de)地址;在接收數(shu)(shu)(shu)據時通(tong)常也(ye)需要保存對(dui)方(fang)的(de)地址。

看到這里大(da)家應該發現了流式(shi)套接字和(he)數據報套接字的一個區別:前(qian)者只能(neng)和(he)一方通(tong)信;后者可以和(he)多方通(tong)信。

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

一旦connect之后,數(shu)據(ju)報套接字也可以使用send/recv收發數(shu)據(ju)了。如果想(xiang)和其他的(de)地址通(tong)信的(de)話,可以重新(xin)connect指定(ding)新(xin)的(de)地址。

發表評論
評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)