溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

TCP的C/S架構(gòu)是什么樣的

發(fā)布時間:2021-10-14 16:59:55 來源:億速云 閱讀:135 作者:柒染 欄目:編程語言

TCP的C/S架構(gòu)是什么樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

TCP的C/S架構(gòu)

  服務(wù)器首先啟動一個net.Listen(),這個net.Listen()從名字上看好像是啟動一個監(jiān)聽,實際上這是由于套接字socket最早期設(shè)計的原因,在Go語言設(shè)計的時候還是沿用了Unix當(dāng)初設(shè)計的思想,直接把函數(shù)名拿過來了,這個函數(shù)初學(xué)的同學(xué)都會有一個誤解,認(rèn)為它是監(jiān)聽,實際上它不是,這個listen()函數(shù)不是真正的監(jiān)聽客戶端,要監(jiān)聽的話監(jiān)聽什么?

  要監(jiān)聽客戶端和我的連接,但是這個Listen不是監(jiān)聽客戶端,而是我設(shè)置服務(wù)器監(jiān)聽的資源(IP、端口),Accept()才是真正監(jiān)聽的,那言外之意,監(jiān)聽嘛,我等著你對我進(jìn)行訪問吧,那就是說,你沒訪問我之前是不是應(yīng)該一直處于等待狀態(tài),一會兒我們寫程序看一下,是在Listen()的時候等著還是在Accept的時候等著,所以Accept是表示接受的意思,當(dāng)它Accpet調(diào)用起來以后,它就等著客戶端和我建立連接,比方說,圖示上已經(jīng)說了,它會阻塞等待用戶建立連接,那言外之意,我沒有用戶建立連接之前它就一直阻塞在那里等待著,實際上監(jiān)聽是在Accept的時候才發(fā)起的,當(dāng)然Accept不是無源之水,它必要Listen設(shè)置好了連接方式(tcp還是udp)、IP地址以及端口以后才能阻塞去監(jiān)聽,當(dāng)有一個客戶端和服務(wù)器發(fā)起請求之后,我調(diào)Accept()函數(shù)完成了,那就說明我服務(wù)器和客戶端之間的連接建立好了。

進(jìn)行數(shù)據(jù)傳輸

  接來下干什么呢?進(jìn)行數(shù)據(jù)傳輸,我建立好連接的目的就是為了進(jìn)行數(shù)據(jù)傳遞,我們這里假定那一般實際上也是這樣,客戶端主動找服務(wù)器建立連接,連接建立好了,客戶端先發(fā)送數(shù)據(jù)給服務(wù)器,服務(wù)器被動的接受客戶端發(fā)來的請求,被動接受客戶端請求數(shù)據(jù),接受到了請求以后,服務(wù)器進(jìn)行相應(yīng)的分析處理,處理完以后把你要請求的數(shù)據(jù)回寫回去,服務(wù)端Read()是讀取客戶端發(fā)送過來的請求,Write()是我把你的請求處理完之后再給你寫回去,當(dāng)這些都做完了,說明我們跟客戶端的一次通信就完成了,那這個時候我們就可以關(guān)閉連接。當(dāng)然如果你還想后續(xù)繼續(xù)通信的話,這個close()關(guān)閉就要延遲。

  客戶端這個流程很簡單,因為服務(wù)器先要站出來在那兒等著客戶端和我建立連接,所以說,服務(wù)器就得先啟動,客戶端相當(dāng)于是我得等你服務(wù)器啟動起來以后你都準(zhǔn)備好了,我在給你發(fā)送訪問請求,客戶端發(fā)送訪問請求,也是調(diào)用一個函數(shù),叫做net.Dail()函數(shù),這個Dail()函數(shù)會對阻塞的Accept()發(fā)送一個請求,如果服務(wù)器準(zhǔn)備好,Accept()返回的時候,Dail也返回,咱們就說客戶端和服務(wù)器建立好了連接,客戶端先發(fā)送數(shù)據(jù),所以客戶端先是一個寫操作。

  發(fā)送完數(shù)據(jù),服務(wù)器那邊讀到客戶端請求進(jìn)行處理,處理完之后寫回來,客戶端再Read()讀取服務(wù)器寫回來的數(shù)據(jù),讀完以后客戶端也可以做簡單處理,比方說我讀到了以后,打印顯示,完成了寫,完成了讀,一次跟網(wǎng)絡(luò)端的通信也就完成了,客戶端可以關(guān)閉連接,大致的流程就是這樣。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI