Watch Star Fork

伤神小怪兽 / HP-SocketC++

加入码云
与超过 200 万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
High Performance TCP/UDP Socket Component
克隆/下载
liqiangqiang 最后提交于 doc
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README_ZH.md 5.16 KB

HP-Socket

高性能网络通信框架(跨 Linux、Windows 版)

English Doc中文文档

Description

  • Server 组件:基于 IOCP / EPOLL 通信模型,并结合缓存池、私有堆等技术实现高 效内存管理,支持超大规模、高并发通信场景。
  • Agent 组件:Agent 组件实质上是 Multi-Client 组件,与 Server 组件采用相同的技 术架构。一个 Agent 组件对象可同时建立和高效处理大规模 Socket 连接。
  • Client 组件:基于 Event Select / POLL 通信模型,每个组件对象创建一个通信线程 并管理一个 Socket 连接,适用于小规模客户端场景。

文档

  • HP-Socket Development Guide.pdf: download

  • 概 述

    • 整体架构
    • 组件分类
    • 组件接口
    • 监听器接口
  • 框架详述

    • 关键概念
      • 接收模型
      • 发送策略
      • 接收策略
      • 连接方式
      • 连接绑定
    • Server 组件
      • 接口描述
      • 工作流程
    • Agent 组件
      • 接口描述
      • 工作流程
    • Client 组件
      • 接口描述
      • 工作流程
  • SSL

    • 组件接口
    • SSL 运行环境
  • HTTP

    • 组件接口
    • HTTP 监听器事件
    • Cookie 管理
  • Linux

    • 组件概述
    • 安装使用
  • 使用方式

    • 源代码
    • 静态库
    • HPSocket DLL
    • HPSocket4C DLL
    • 其它编程语言使用 HPSocket
  • 附 录

    • 示例 Demo
      • Windows 示例
      • Linux 示例
    • 辅助函数
    • FAQ

Agent 组件

Agent 组件

例子

  • C++ 例子
#include <hpsocket/HPSocket.h>

/* Listener Class */
class CListenerImpl : public CTcpPullServerListener
{

public:
	// 5. process network events
	virtual EnHandleResult OnPrepareListen(ITcpServer* pSender, SOCKET soListen);
	virtual EnHandleResult OnAccept(ITcpServer* pSender, CONNID dwConnID, UINT_PTR soClient);
	virtual EnHandleResult OnHandShake(ITcpServer* pSender, CONNID dwConnID);
	virtual EnHandleResult OnReceive(ITcpServer* pSender, CONNID dwConnID, int iLength);
	virtual EnHandleResult OnSend(ITcpServer* pSender, CONNID dwConnID, const BYTE* pData, int iLength);
	virtual EnHandleResult OnClose(ITcpServer* pSender, CONNID dwConnID, EnSocketOperation enOperation, int iErrorCode);
	virtual EnHandleResult OnShutdown(ITcpServer* pSender);
};

int main(int argc, char* const argv[])
{
	// 1. Create listener object
	CListenerImpl s_listener;
	// 2. Create component object (and binding with listener object)
	CTcpPullServerPtr s_pserver(&s_listener);
	
	// 3. Start component object
	if(!s_pserver->Start("0.0.0.0", 5555))
		exit(1);
	
	/* wait for exit */
	// ... ... 
	
	// 6. (optional) Stop component object
	s_pserver->Stop()

	return 0;
	
	// 7. Destroy component object automatically
	// 8. Destroy listener object automatically
}
  • C 例子
#include <hpsocket/HPSocket4C.h>

// 5. process network events
EnHandleResult __HP_CALL OnConnect(HP_Agent pSender, HP_CONNID dwConnID);
EnHandleResult __HP_CALL OnReceive(HP_Agent pSender, HP_CONNID dwConnID, int iLength);
EnHandleResult __HP_CALL OnSend(HP_Agent pSender, HP_CONNID dwConnID, const BYTE* pData, int iLength);
EnHandleResult __HP_CALL OnClose(HP_Agent pSender, HP_CONNID dwConnID, En_HP_SocketOperation enOperation, int iErrorCode);
EnHandleResult __HP_CALL OnShutdown(HP_Agent pSender);

int main(int argc, char* const argv[])
{
	HP_TcpPullAgentListener s_listener;
	HP_TcpPullAgent s_agent;

	// 1. Create listener object
	s_listener	= ::Create_HP_TcpPullAgentListener();
	// 2. Create component object (and binding with listener object)
	s_agent		= ::Create_HP_TcpPullAgent(s_listener);
	
	/* Set listener callbacks */
	::HP_Set_FN_Agent_OnConnect(s_listener, OnConnect);
	::HP_Set_FN_Agent_OnSend(s_listener, OnSend);
	::HP_Set_FN_Agent_OnPullReceive(s_listener, OnReceive);
	::HP_Set_FN_Agent_OnClose(s_listener, OnClose);
	::HP_Set_FN_Agent_OnShutdown(s_listener, OnShutdown);
	
	// 3. Start component object
	if(::HP_Agent_HasStarted(s_agent))
		exit(1);
	
	// 4. Connect to dest host
	::HP_Agent_Connect(s_agent, "remote.host.1", REMOTE_PORT_1, nullptr);
	::HP_Agent_Connect(s_agent, "remote.host.2", REMOTE_PORT_2, nullptr);
	::HP_Agent_Connect(s_agent, "remote.host.3", REMOTE_PORT_3, nullptr);
	
	/* wait for exit */
	// ... ... 
	
	// 6. (optional) Stop component object
	::HP_Agent_Stop(s_agent)

	// 7. Destroy component object
	::Destroy_HP_TcpPullAgent(s_agent);
	// 8. Destroy listener object
	::Destroy_HP_TcpPullAgentListener(s_listener);
	
	return 0;
}

Component List

  • Basic Components

Basic Component

  • SSL Components

SSL Component

  • HTTP Components

HTTP COmponent

项目点评 ( 28 )

你可以在登录后,发表评论

8_float_left_people 8_float_left_close