Socket 元件封裝 TCP/IP 及相關協定 (XNS, DECnet, IPX/SPX),讓應用程式透過讀寫連接的機器進行通訊,無需處理網路軟體細節。C++Builder 提供伺服器/用戶端 Socket 撰寫網路服務 (HTTP, FTP 等) 或自定義服務。
撰寫網路應用前須明確服務協定。標準服務 (HTTP, FTP, finger, time) 需遵循既定協定;新服務需自行設計通訊協定 (訊息格式、編碼方式)。
Socket 在網路軟體與應用程式間提供介面,應用程式仍需對外提供 API (可參考 ISAPI 或自行設計)。
標準服務有固定連接埠號。Windows Socket 物件提供方法查詢服務連接埠。新服務可在 Services 檔案指定關聯連接埠 (參閱 Microsoft Windows Sockets 文件)。
| 類型 | 描述 |
|---|---|
| 用戶端連接 | 本地用戶端 Socket 主動發起連接遠端伺服器 Socket,經查找、請求、接受、描述傳回完成。 |
| 傾聽連接 | 伺服器 Socket 被動形成「半連接」狀態,維護請求佇列,接受請求時建立新 Socket 服務用戶端,傾聽 Socket 保持開放。 |
| 伺服器連接 | 傾聽 Socket 接受請求後建立的完整連接,雙端能力對等,僅傾聽連接為單一端點。 |
123.197.1.2),一系統可有多 IP。https://www.wsite.com),易記、可檢查拼寫、支援 IP 變更不影響用戶端。HOSTS 檔可建立名稱對應 (Windows 95/NT)。選擇建議:已知主機名用主機名 (易維護);未知則用 IP (連線較快,省去解析)。
Host (主機名) 或 Address (IP),Port (連接埠號) 或 Service (服務名),若同時指定以 Service 為準。Open(),或設計時設 Active=true 自動連接。Socket 屬性存取 TClientWinSocket,取得雙端位址/連接埠、SocketHandle、Handle (Windows 訊息)、AsyncStyles。Close(),或收到 OnDisconnect 事件通知對方關閉。Port 或 Service (建議用 Service 減少錯誤),同時指定以 Service 為準。Open() 或設計時 Active=true。OnClientConnect 事件。Socket 存取 TServerWinSocket 列舉活動用戶端 (TServerClientWinSocket),取得雙端位址/連接埠、Handle、SocketHandle、AsyncStyles。Close() 關閉所有用戶連接並停止監聽;用戶端關閉觸發 OnClientDisconnect。OnLookup:嘗試定位伺服器,可修改連接參數、呼叫 Windows API。OnConnecting:找到伺服器,可取得實際連接 IP/連接埠。OnConnect:連接確立,若立即讀寫在此處理。OnListen (建立監聽前,可限制 IP)。OnGetSocket:可提供自訂 TServerClientWinSocket 子類別。OnAccept:首次取得用戶端資訊。OnGetThread (stThreadBlocking):可提供自訂執行緒類別。OnThreadStart (stThreadBlocking):執行緒啟動初始化。OnClientConnect:連接完成,非阻塞模式可開始讀寫。OnError:連接發生錯誤觸發,處理函數可修改錯誤碼為 0 避免例外拋出。
ClientType=ctNonBlocking、ServerType=stNonBlocking。OnRead/OnWrite,伺服器 OnClientRead/OnClientWrite。ReceiveBuf/ReceiveText (先用 ReceiveLength 取得位元組數)。SendBuf/SendStream/SendText;SendStreamThenDrop 發送完關閉連接 (僅關閉用戶連接,非監聽)。SendStream 系列勿自行釋放 Stream,Socket 會自動釋放。ClientType=ctBlocking,主動發起讀寫,執行緒阻塞直到完成。