首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC++

網路通訊開發套件:TCP/UDP/NamedPipe 封裝庫設計手冊

     編輯:VC++

專案概覽

  • 版本:v2.0 (2002/06/25)
  • 作者:聞怡洋
  • 命名空間:commIPC(使用 using namespace commIPC;)
  • 核心目標:C++ 封裝 WinSocket 與 Named Pipe API,提供連線建立、資料收發、同步/非同步接收、連線與資料偵測功能。

架構設計:類別階層

CIPCComm (抽象基底)
├── CIPCSocket     // TCP Socket
├── CUDPSocket     // UDP Socket
└── CIPCNamedPipe  // Named Pipe

錯誤代碼定義

#define SP_ERR_SUCCESS        0
#define SP_ERR_NETWORK        1
#define SP_ERR_NOT_FINISH     2
#define SP_ERR_TIMEOUT        3
#define SP_ERR_NODATA         4
#define SP_ERR_NOT_IMPLEMENT  98
#define SP_ERR_GENERAL        99

核心介面:CIPCComm

分類函數說明
接收Recv(iWant, pbBuf, iRead)阻塞直到讀滿或錯誤
RecvWithTimeOut(iTimeout, iWant, pbBuf, iRead)指定逾時,盡可能讀入
TestAndRecv(iTimeout, iWant, pbBuf, iRead)偵測到資料後單次讀取
發送Send(iWant, pbBuf, iWrote)阻塞直到寫完或錯誤
偵測TestRead(iTimeOut)測試是否有資料到達
TestConnect(iTimeOut)測試是否有連線到達

TCP Socket:CIPCSocket

建構

CIPCSocket(SOCKET sockComm, BOOL fAutoDel=FALSE);

fAutoDel:物件銷毀時是否自動關閉 Socket。

靜態工廠函數

  • CreateListenSocket(pszLocalAddr, uPort):建立伺服器監聽 Socket。pszLocalAddr=NULL 綁定所有介面。
  • CreateConnectSocket(pszRemoteAddr, iPort, pszLocalAddr):建立用戶端 Socket 並連線。
  • CreateAcceptSocket(sockListen, pszHost, piPort):伺服器接受連線,可取得客戶端位址/埠。
  • CreateUDPSocket(iLocalPort, pszLocalAddr):建立 UDP Socket(供 CUDPSocket 使用)。

UDP Socket:CUDPSocket

// 發送指定目標
int SendTo(iWant, pbBuf, iWrote, pszHost, iPort);

// 接收並可取得來源
int RecvFrom(iWant, pbBuf, iRead, pszHost=NULL, piPort=NULL);

Named Pipe:CIPCNamedPipe

建構

CIPCNamedPipe(HANDLE hPipe, BOOL fAutoDel=FALSE);

建立函數

// 全域 API
HANDLE SPCreateServerPipe(pszPipeName, iTimeout=10);
HANDLE SPCreateClientPipe(pszPipeName, iTimeout=10);

// 類別靜態成員
static HANDLE CreateServerPipe(pszPipeName, iTimeout=10);
static HANDLE CreateClientPipe(pszPipeName, iTimeout=10);

Named Pipe 連線成功即可直接用句柄收發,無額外接受步驟。

v2.0 交付內容

  • include/commonIPC.h
  • commIPC/ 原始碼
  • lib/commonIPC_D.lib/.dll (Debug) 、commonIPC.lib/.dll (Release)

功能支援矩陣

功能支援備註
TCP 連線導向通訊✓Server/Client 完整流程
UDP 無連線通訊✓SendTo/RecvFrom
Named Pipe 進程間通訊✓Server/Client 建立
同步/非同步接收✓Recv/RecvWithTimeOut/TestAndRecv
資料/連線偵測✓TestRead/TestConnect
實體斷線偵測✗無心跳/保活機制
UDP 廣播✗未實作

使用建議

  1. 依通訊模式選擇對應類別,透過基底介面多型使用。
  2. 高併發場景搭配 TestRead/TestConnect 實作事件驅動模型。
  3. 跨網段/防火牆環境優先考慮 TCP;本機高效能 IPC 用 Named Pipe。
  4. UDP 應用層需自行處理封包丟失、重序、分片重組。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved