程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> VC++ >> 網絡通信開發包說明與開發手冊

網絡通信開發包說明與開發手冊

編輯:VC++

關鍵字: tcp udp pipe 通信
原作者姓名: 聞怡洋
轉載請與作者聯系

介紹
v 2.0版本

正文
網絡通信開發包說明與開發手冊

項目名稱:N/A
系統名稱:N/A
子系統名稱:N/A
密級:

2002/01/29

作者/修改者 版本 修改原因 時間
聞怡洋 Alpha 0.9 創建功能介紹
創建類定義與說明 2002/01/29
聞怡洋 Alpha 2.0 添加UDP支持
以DLL形式提供
添加類圖 2002/06/25

相關文檔:
其他說明:如果有任何問題和功能上的補充請聯系聞怡洋

目錄

第 1 章 介紹 3
1.1 解決的問題 3
1.2 實現方法介紹 3
1.3 名字空間 3
1.4 版本規劃 3

第 2 章 類與API功能介紹 4
2.1 類圖 4
2.2 錯誤類型定義 4
2.3 基礎類:CIPCCOMM 5
2.3.1 構造 5
2.3.2 接收數據 5
2.3.3 發送數據 5
2.3.4 檢測函數 6
2.4 TCP SOCKET支持類:CIPCSOCKET 6
2.4.1 構造 6
2.4.2 Socket創建 6
2.5 UDP SOCKET支持類:CUDPSOCKET 7
2.5.1 數據發送 7
2.6 NAMEDPIPE支持類:CIPCNAMEDPIPE 7
2.6.1 構造 7
2.6.2 NamedPipe創建 7

第 3 章 版本V2.0功能介紹 9

3.1 文件 9
3.2 可以完成的功能 9
3.3 不能完成的功能 9

第 4 章 示范代碼說明 10

4.1 文件列表 10

第 1 章 介紹

1.1 解決的問題
開發一套易用的網絡通信包,以C++形式對功能進行封裝。
1.2 實現方法介紹
對WinSocket和NamedPipe的API函數進行封裝,並且提供部分API函數完成連接的建立和數據檢測功能。
1.3 名字空間
commPIC
在使用時要使用下面語句引用:using namespace commIPC;
1.4 版本規劃
• V1.0支持基於Socket和Named Pipe的通信方式。
• V2.0支持非連接方式通信。


第 2 章 類與API功能介紹

2.1 類圖

2.2 錯誤類型定義
//定義錯誤類型
//成功
#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

2.3 基礎類:CIPCComm
定義了通信類的所有功能函數。
2.3.1 構造
CIPCComm(){};
2.3.2 接收數據
直到完全讀入數據,或是錯誤發生
virtual int Recv(const int iWant,BYTE* pbBuf,int& iRead)=0;

在規定時間內讀入要求數量的數據,盡可能多的讀入數據
virtual int RecvWithTimeOut(int iTimeout,const int iWant,BYTE* pbBuf,int& iRead)=0;

檢測數據並讀入,在檢測到數據後只進行一次讀操作
virtual int TestAndRecv(int iTimeout,const int iWant,BYTE* pbBuf,int& iRead)=0;
2.3.3 發送數據
直到完全寫出數據,或是錯誤發生
virtual int Send(const int iWant,const BYTE *pbBuf,int& iWrote)=0;

2.3.4 檢測函數
測試是否有數據到達
virtual int TestRead(int iTimeOut)=0;

測試是否有連接到達
virtual int TestConnect(int iTimeOut)=0;

2.4 TCP Socket支持類:CIPCSocket
2.4.1 構造
通過現有的Socket創建對象,fAutoDel表明在對象被刪除時是否自動關閉Socket。
CIPCSocket(SOCKET sockComm,BOOL fAutoDel=FALSE);
2.4.2 Socket創建
創建服務器端Socket
pszLocalAddr表明本地的IP地址,如果為NULL表明將Socket綁定到所有地址上。
static SOCKET CreateListenSocket(LPCSTR pszLocalAddr,UINT uPort)

創建客戶端Socket
創建後將連接到服務器端,pszLocalAddr表明本地的IP地址,如果為NULL表明將Socket綁定到所有地址上。
static SOCKET CreateConnectSocket(LPCSTR pszRemoteAddr,int iPort,LPCSTR pszLocalAddr)

在服務器端等待並建立與客戶端的連接
可以通過pszHost piPort得到客戶端的地址和端口
static SOCKET CreateAcceptSocket(SOCKET sockListen,char* pszHost,int *piPort)

創建UDP Socket
發送發可以不指明端口,但接收方必須指明端口。
static SOCKET CreateUDPSocket(int iLocalPort,LPCSTR pszLocalAddr)

2.5 UDP Socket支持類:CUDPSocket
2.5.1 數據發送
在父類基礎上添加UDP的數據發送和接收函數。
發送時指明對方IP和端口號。
int SendTo(const int iWant,const BYTE* pbBuf,int& iWrote,LPCSTR pszHost,const int iPort);
接收數據時可以通過pszHost piPort得到發送方的地址和端口。
int RecvFrom(const int iWant,const BYTE* pbBuf,int& iRead,char* pszHost=NULL,int *piPort=NULL);
2.6 NamedPipe支持類:CIPCNamedPipe
2.6.1 構造
通過現有的NamedPipe創建對象,fAutoDel表明在對象被刪除時是否自動關閉NamedPipe。
CIPCNamedPipe(HANDLE hPipe,BOOL fAutoDel=FALSE);
2.6.2 NamedPipe創建
使用API函數創建NamedPipe,有關NamedPipe命名規則請參考有關資料。iTimeout表示超時時長。
HANDLE SPCreateServerPipe(LPCSTR pszPipeName,int iTimeout=10);
HANDLE SPCreateClientPipe(LPCSTR pszPipeName,int iTimeout=10);
或者使用類中靜態成員函數創建。
static HANDLE CreateServerPipe(LPCSTR pszPipeName,int iTimeout=10);
static HANDLE CreateClientPipe(LPCSTR pszPipeName,int iTimeout=10);
與Socket不同的是,連接一旦創建成功就可以利用返回的句柄進行通信。

第 3 章 版本V2.0功能介紹

3.1 文件
include\commonIPC.h
commIPC\源代碼
lib\commonIPC_D.lib commonIPC_D.dll與commonIPC.lib commonIPC.DLL分別對應調試版本和發行版本
3.2 可以完成的功能
• 有連接通信中按照服務器和客戶端兩方面實現了連接的建立功能。
• 無連接通信中實現了UDP方式通信。
• 實現數據的發送接收。
• 支持數據的同步接收和異步接收。
• 支持數據的檢測和連接的檢測。
3.3 不能完成的功能
• 沒有實現網絡連接故障的檢測,例如物理上的斷線。
• UDP方式通信不支持廣播。

正文完

  1. 上一頁:
  2. 下一頁:
欄目導航
Copyright © 程式師世界 All Rights Reserved