HP-Socket通信框架使用入门

官方下载地址:https://github.com/ldcsaa/HP-Socket

简单介绍下官方提供的内容:

----DOC:目录下是官方提供的文档,包括Development Guide

----Linux:Linux的工程

----Windows:Windows的工程,我在Windows开发的详细介绍这个。

      ----Bin:编译好的dll和lib

      ----Demo:官方提供的使用示例

      ----Project:项目的VS工程

      ----Include:使用HP-Socket库需要的头文件

      ----Src是核心功能源代码,Project只是工程,源代码在这里

      ----Common是通用功能源代码

Demo里提供的例子工程包含了部分HP-Socket源代码,不能算直接使用编译好的dll和lib。这里讲如何直接使用Include里的头文件和Bin里的dll和lib来开发。


其实使用这个库很简单。过程大致是:

HP-Socket有两种开发库接口,C和C++的。我这里使用的是C++的。

提示:记得设置工程为使用多字节字符集,使用unicode字符集会创建socket失败,和库的实现有关。

首先当然是包含三个头文件:

#include"HPSocket.h"
#include"SocketInterface.h"
#include"HPTypeDef.h

HP-Socket有一个Listener的概念,监听者是一个类,要求实现特定的纯虚函数用来处理通信过程中的事件,包括收到的数据。如TCP客户端Listener需要定义如下函数:

virtual EnHandleResult OnSend(ITcpClient* pSender, CONNID dwConnID, const BYTE* pData, int iLength);
virtual EnHandleResult OnReceive(ITcpClient* pSender, CONNID dwConnID, const BYTE* pData, int iLength);
virtual EnHandleResult OnClose(ITcpClient* pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode);

virtual EnHandleResult OnShutdown(ITcpClient* pSender);

然后再创建服务端或者客户端对象:

CTcpClientPtr s_psever(&listener);

进而可以使用通信对象的Start函数绑定端口或者链接服务端:

s_psever->Start("127.0.0.1", 5555,1,"0.0.0.0")

后续就可以进一步使用Send的函数实现自己的工。

记得要加入lib:

#pragma comment(lib,"HPSocket_D.lib")

并将相应的dll放在生成的exe同一目录下。


Listener内定义的Listen函数会在特定通信事件完成后被调用,如建立连接,接收到客户连接,发生数据,接收数据,关闭连接等。在官方提供的Development Guide内会有流程图表明事件何时发生。如:框架详述----Client组件----工作流程章节。

示例工程下载:

https://download.csdn.net/download/shadow20080578/10311040

https://download.csdn.net/download/shadow20080578/10311047








你可能感兴趣的:(C++)