站内搜索

网络通信开发包说明与开发手册

关键字: 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方式通信不支持广播。

正文完

  • 上一篇:下载并保存相关网页
  • 下一篇:在(CListView)列表视图中添加右键菜单