官方下载地址:
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
欢迎关注我的微博:大雄_RE。专注软件逆向,分享最新的好文章、好工具,追踪行业大佬的研究成果。