簡介

一、什麼是Socket程式設計

  1. Socket字面上的含義
    Socket的英文原意是插座,插座的功用是建立兩端的連線,因此在網路程式設計中,被引申為網路通訊端點。
  2. Socket程式設計定義
    透過 TCP / UDP 網路通訊協定,實現多台主機之間的資料傳輸。
  3. 淺白解讀
    撰寫程式,讓兩台或多台電腦互相收發資料,常見範例:區域網路線上聊天工具。

類比說明:插座=網路介面;插頭=另一台主機,插上插頭=建立網路連線。

為了方便學習,我們透過實作範例,一邊寫程式一邊理解觀念。

二、簡易聊天工具設計方案

架構模型:用戶端/伺服器端(C/S)
  • 伺服器端(Server)
  1. 綁定本機指定連接埠,持續監聽網路連入請求
  2. 等待其他電腦發起連線
  3. 偵測到用戶端連入後,建立通訊通道
  • 用戶端(Client)
    依照伺服器的IP位址加上連接埠號,主動送出連線請求
  • 通訊目標:兩台電腦可以即時收發文字訊息,完成即時聊天功能

運作流程

  1. 伺服器啟動 → 開啟連接埠監聽
  2. 用戶端啟動 → 主動連接伺服器IP與連接埠
  3. 連線建立完成,雙方開始互傳、接收訊息

以下是最簡單的範例程式

伺服器端

// 1. 建立TcpListener監聽IP與連接埠
TcpListener listener = new TcpListener(IPAddress.Any, 8899);
listener.Start();
// 2. 等候用戶端連線
TcpClient client = await listener.AcceptTcpClientAsync();
// 3. 取得網路串流,循環處理訊息收發
NetworkStream stream = client.GetStream();
Code language: JavaScript (javascript)

用戶端

// 連線至伺服器IP與連接埠
TcpClient client = new TcpClient();
await client.ConnectAsync("192.168.1.100",8899);
NetworkStream stream = client.GetStream();Code language: JavaScript (javascript)

簡介

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *