一、什麼是Socket程式設計
- Socket字面上的含義
Socket的英文原意是插座,插座的功用是建立兩端的連線,因此在網路程式設計中,被引申為網路通訊端點。 - Socket程式設計定義
透過 TCP / UDP 網路通訊協定,實現多台主機之間的資料傳輸。 - 淺白解讀
撰寫程式,讓兩台或多台電腦互相收發資料,常見範例:區域網路線上聊天工具。
類比說明:插座=網路介面;插頭=另一台主機,插上插頭=建立網路連線。
為了方便學習,我們透過實作範例,一邊寫程式一邊理解觀念。
二、簡易聊天工具設計方案
架構模型:用戶端/伺服器端(C/S)
- 伺服器端(Server)
- 綁定本機指定連接埠,持續監聽網路連入請求
- 等待其他電腦發起連線
- 偵測到用戶端連入後,建立通訊通道
- 用戶端(Client)
依照伺服器的IP位址加上連接埠號,主動送出連線請求 - 通訊目標:兩台電腦可以即時收發文字訊息,完成即時聊天功能
運作流程
- 伺服器啟動 → 開啟連接埠監聽
- 用戶端啟動 → 主動連接伺服器IP與連接埠
- 連線建立完成,雙方開始互傳、接收訊息
以下是最簡單的範例程式
伺服器端
// 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)
簡介
Next: 伺服器端通訊埠監聽