Home [C# 筆記] Socket
Post
Cancel

[C# 筆記] Socket

Socket

兩個人在兩個房間裡打電話的圖

  • 人通過「電話」可以通信
  • 程序通過「Socket」來通信

  • 我和你打電話,電話=>規定好的語言
  • 電腦和電腦進行聯繫=>協議

相關概念

  • 用於描述 IP、Port 用戶端Client => 服務端Server

負責監聽的Socket

創建一個負責通信的Socket

Port (埠/端口) & 協議

客戶端如果要連到服務器,一定要有一個請求過程,
客戶端如果要連到服務器的話,一定要知道ip地址,
那麼在我服務器當中有很多很多的應用程式, 但是很多的應用程式,我客戶端肯定是連接到你這個服務器上某一個應用程式,
但是這些應用程式都在同一台服務器上, 所以說他們的ip地址是一樣的,
但是我要怎麼區分我要連接某一個應用程式呢?
這時候我就需要知道,拿到這個應用程式的Port號 (埠/端口)

協議(TCP & UDP)

  • TCP:三次握手、服務器、安全穩定、但是效率低
  • UPD:快速、效率高,但是不穩定,容易發生數據丟失

TCP優於UDP的好處是什麼?
TCP比較安全穩定,一般不會發生數據丟失,

因為TCP在傳輸過程中,我們要經歷這樣三個過程:
叫做三次握手

TCP協議要求我們必須要有一個服務器,
這個請求一定是客戶端發給服務端的請求,
而我們服務器不能去客戶端發請求,
因為咱們服務器不知道客戶端在哪,
所以得是客戶端發給服務器

TCP 三次握手

首先:
第一次:客戶端向服務器發一條訊息:你有空嗎?
第二次:服務器看到了回給客戶端:我有空
第三次:然後客戶端再向服務器回:好我知道你有空了

TCP/IP只有三次握手完全成功之後,這個時候客戶端才能跟服務器互相的收發數據,否則的話,就不會進行這個數據的溝通。

所以TCP的好處是什麼呀?安全穩定
但是,效率比較低一些,為什麼?
因為我要用三次這樣握手的過程,這三次握手是需要時間的呀。

UDP

客戶端今天要發訊息給你,管你有空沒空,我都發
消息我層層全給你發過去,
那具體你服務器這邊有沒有精力去接收這個消息,
我不管,反正我就你發過去

所以,UDP的特點就是效率很高,
因為它沒有經過這樣的三次握手,
但是不穩定,數據容易丟失,

為什麼呀?
因為如果服務器那邊很忙的話,
並沒有時間去處理你發送過來的這個消息,
這個時候造成的現象怎麼辦?數據丟失啊。

他們各有各有優缺點,應用場合也不同
比如,我們開視頻聊天,因為我們都希望對方很流暢,不要卡卡的,有點不清晰沒關係,所以這時候我們一般都會用UDP。

This post is licensed under CC BY 4.0 by the author.