採用 C/S 模式為例:伺服器端在指定連接埠監聽,等待客戶端發起連線請求。連線建立後,雙方依約定的資料格式進行交換。Socket 僅產生一個描述符,後續仍需透過 bind、listen、accept 等呼叫填入完整資訊才能通訊。
socket() 取得描述符bind() 綁定 IP 與連接埠listen() 設定等待佇列長度accept() 阻塞等待連線,成功時回傳新 Socket 描述符accept 回傳後建立新行程處理通訊,父行程繼續 acceptsocket() 取得描述符connect() 向指定伺服器發起連線System.Net.Sockets 命名空間提供以下重要類別:
WebRequest、TcpClient、UdpClient 內部皆使用此類Stream,表示網路資料流Socket temp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket temp = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
Connect:連線至伺服器(未先 Bind 時系統自動指派 1024-5000 間的隨機連接埠)Send:傳送資料Receive:接收資料Bind:綁定本地端點Listen:開始監聽Accept:接受連線並建立新 Socket 處理Close:關閉 SocketEndPoint 類別抽象表示網路資源,IP 位址族使用 IPEndPoint,結合主機 IP 與連接埠形成連線點。
IPAddress myIP = IPAddress.Parse("192.168.0.1");
Send/Receive 直到完成才回傳控制權,最常用本系列範例皆採用同步模式示範。