生活場景簡單理解Socket
Socket是負責使兩臺計算機中的應用程式之間通信用的,我們可以將這個通信程序類比到我們生活中撥打座機電話進行溝通的程序,
我們首先回想下現實生活中兩個人撥打電話的場景,首先需要有兩位溝通者,這里可以稱為呼叫者和被呼叫者,有了兩位溝通物件后,則雙方溝通地點需要電信插座和電話,在雙方溝通之前大家需要提前約定好使用說明語言進行溝通,不然一個說英語另一方說日語那么會導致無法進行資訊的表達,有了電話和電信的插座,我們需要將電話線插到電信插座中,這樣才能進行通信,另外在正式進行撥號之前,呼叫者必須知道被呼叫者的電話號碼,
例圖:

通過以上的場景我們將融入到Socket通信的場景中進行類比,首先兩位溝通者就相當于客戶端和服務器,進行溝通的設備“電話”就相當于客戶端和服務器中的兩個應用程式,例如瀏覽器和百度網站,
關于使用電話通常需要插入到電信的插座中才能通信,那么這里兩個應用程式之間需要通信也同樣需要“插座”,這里的“插座”就相當于我們的Socket,就像引擎一樣驅動電話傳遞信號進行通信,
在電話場景中提到雙方需要協商好進行電話溝通的語言,那么此場景放到Socket通信中則就稱之為“協議”,例如我們通過瀏覽器訪問百度網站,兩則之間都是通過HTTP協議進行資訊的傳達的,
在電話溝通前撥通的電話號碼,就相當于客戶端瀏覽器通過IP或域名訪問到服務器中具體的應用程式,這里的IP或域名就相當于電話號碼,這里需要注意的一點是,IP或域名只是找到對應服務器,而Socket還需要根據埠號在服務器中找到指定的應用,
例圖:

一個生活中電話溝通場景的例子就完全可以簡單的理解下Socket通信的一個程序和作用,所以說,不光是藝術源于生活,計算機中的很多概念知識都可以從生活場景中獲取靈感,
Socket主要型別
流式套接字
流式套接字是使用TCP協議,是面向連接的資料傳輸服務,根據TCP協議該套接字具備如下的特點:需要進行3次握手,輸出資料安全但效率低,
資料報套接字
資料報套接字使用UDP協議,是無連接的資料傳輸服務,根據UDP協議該套接字具備如下特點:傳輸資料不可靠容易丟失,但是傳輸速度快,
Socket在服務器和客戶端中的應用模式
通常在服務器和客戶端之間要進行通信,至少要包含三個Socket,其中一個運行在客戶端,還有兩個運行在服務器,

服務端負責監聽的Socket
Socket一直處于等待狀態,實時監控客戶端發送連接請求,監聽并不定位某個具體的客戶端,只要是客戶端請求的IP和埠號,在Socket監聽范圍內的都會被監聽到,從而建立連接,
客戶端Socket
用于向服務器的Socket發送連接請求,發送連接請求前客戶端必須要描述出連接方的IP地址和埠號,
服務器通信Socket
在服務器監聽到客戶端發送的連接請求后,就會創建用于與客戶端進行通信的Socket,
使用Socket實作客戶端和服務端通信的基本流程

該圖是以代碼的撰寫的維度進行繪制,以便在后期使用到時進行回顧,
實戰案例
1.使用Socket實作WEB服務器(類似于IIS);
2.使用Socket實作客戶端和服務端的聊天通信;
案例原始碼地址:https://github.com/JiangChengXuan/AppCase.git
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/112724.html
標籤:.NET技术
