跨年呈献:HP-Socket for Linux 1.0 震撼发布
HP-Socket提供以下几类组件,详细内容请参考《HP-Socket网络通信框架开发指南》:
- Server:基于IOCP / EPOLL通信模型,并结合缓存池、私有堆等技术实现高效内存管理,支持超大规模、高并发通信场景。
- Agent:Agent组件实质上是Multi-Client组件,与Server组件采用相同的技术架构。一个Agent组件对象可同时建立和高效处理大规模Socket连接。
- Client:基于Event Select / POLL通信模型,每个组件对象创建一个通信线程并管理一个Socket连接,适用于小规模客户端场景。
$ sudo ./install.sh -h Usage: install.sh [...O.P.T.I.O.N.S...] -----------------+-------------------------------------------------p|--prefix : install/uninstall path (default: /usr/local)-l|--libdir : lib dir (default: x86 -> lib, x64 -> lib64)-d|--with-demo : install demos or not (default: true)-u|--uninstall : execute uninstall operation from install path-v|--version : print installing hp-socket version-h|--help : print this usage message -----------------+------------------------------------------------
- 创建监听器对象
- 创建组件对象(并绑定监听器)
- 启动组件
- 连接远程主机(仅用于Agent组件)
- 处理通信事件(OnConnect/OnReceive/OnClose ......)
- 停止组件(可选,第7步销毁组件对象前会先停止组件)
- 销毁组件对象
- 销毁监听器对象
示例代码
- C++ 示例
#include <hpsocket/HPSocket.h>/* Listener Class */ class CListenerImpl : public CTcpPullServerListener {public:// 5. process network eventsvirtual 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 objectCListenerImpl s_listener;// 2. Create component object (and binding with listener object)CTcpPullServerPtr s_pserver(&s_listener);// 3. Start component objectif(!s_pserver->Start("0.0.0.0", 5555))exit(1);/* wait for exit */// ... ... // 6. (optional) Stop component objects_pserver->Stop()return 0;// 7. Destroy component object automatically// 8. Destroy listener object automatically }
- C 示例
#include <hpsocket/HPSocket4C.h>// 5. process network events EnHandleResult __stdcall OnConnect(HP_Agent pSender, HP_CONNID dwConnID); EnHandleResult __stdcall OnReceive(HP_Agent pSender, HP_CONNID dwConnID, int iLength); EnHandleResult __stdcall OnSend(HP_Agent pSender, HP_CONNID dwConnID, const BYTE* pData, int iLength); EnHandleResult __stdcall OnClose(HP_Agent pSender, HP_CONNID dwConnID, En_HP_SocketOperation enOperation, int iErrorCode); EnHandleResult __stdcall OnShutdown(HP_Agent pSender);int main(int argc, char* const argv[]) {HP_TcpPullAgentListener s_listener;HP_TcpPullAgent s_agent;// 1. Create listener objects_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 objectif(::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; }
组件列表
HP-Socket for Linux v1.0目前发布了一系列基础组件,后续版本将会陆续发布SSL组件和HTTP组件。
跨年呈献:HP-Socket for Linux 1.0 震撼发布相关推荐
- MongoDB数据库泄露8亿电邮地址;微软开源Windows计算器;Linux 5.0 Kernel发布丨Q新闻...
本周要闻:华为正式宣布起诉美国政府:360 首席安全官谭晓生宣布离职:阿里开源 Flutter 应用框架 Fish Redux:微软开源 Windows 计算器:Linux 5.0 Kernel 发布 ...
- Slackware Linux 14.0 RC5 发布
Slackware Linux 发布 14.0 RC5 版本,下载地址: slackware-current-install-dvd.iso (2,320MB, MD5) slackware64-cu ...
- oracle 8.0版本下载,Oracle Linux 8.0 发布
早在5月初,就在Red Hat Enterprise Linux 8.0发布之前,我们看到了Oracle Linux 8的公测版,而今天,Oracle Linux 8.0已经升级到稳定的版本,并且已经 ...
- Windows Socket和Linux Socket编程的区别
2019独角兽企业重金招聘Python工程师标准>>> 1.一些常用函数的移植 http://www.vckbase.com/document/viewdoc/?id=1586 2. ...
- php socket keepalive,linux keepalive探测对应用层socket api的影响
问题 大部分人都知道tcp的keepalive. 假设读者知道keepalive会如何触发. 这篇文章想讨论keepalive触发后, 对socket使用者的影响. keepalive设置 修改/et ...
- Fastsocket:高扩展性的 Socket 以及 Linux 内核的底层网络实现
目录 简介 安装编译 测试结果 GitHub README 介绍 参加者 安装 从源安装 开关内核 系统配置 用法 合适的场景### 如何使用 演示服务器 评价 Nginx的 HAProxy 在线评估 ...
- linux怎么连接两个服务器,一个服务器端同时创建两个socket连接 linux
不可不知 Linux操作系统网络服务器模型 Linux系统网络服务器模型主要有两种:并发服务器和循环服务器. 所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻 ...
- 【网络编程入门】使用socket在Linux下实现即时通信软件
使用socket在Linux下实现即时通信软件 在前一篇文章中讲到了如何使用winsock:[网络编程入门]在C++中使用Windows TCP Sockets,也算是勉强入门了吧,接下来自己写一下在 ...
- socket in Linux
socket in Linux Socket编程界面由4BSD UNIX首先提出,目的是解决网间网进程通信问题.Socket接口为进程间通信提供了一种新的手段,它不但能用于同一机器中的进程之间的通信, ...
最新文章
- 京东热点key探测系统发布,单机 QPS 提升至 37 万
- JMM(Java内存模型)
- html jq移到出现内容,jquery操作html元素之( 获得内容和属性)
- 第四十四期:1.3万亿条数据查询如何做到毫秒级响应?
- 前端网页广告无线翻滚_从小白到web前端工程师进阶之路 从0到1到更深
- uwsgi和nginx的故事
- Spring框架中IoC(控制反转)的原理
- SQL水平测试题目(一)
- redhat 5.4 yum配置
- Codeforces Round #224 (Div. 2)
- ASP.NET3.5下的MSChart图表控件使用
- volte的sip信令流程_VOLTE-SIP代码详解及SIP流程图解
- windows7系统损坏修复_火绒安全警报:微软发布高危漏洞补丁 火绒“漏洞修复”模块已完成升级...
- html设置编剧,编剧必备之电影剧本创作六大基本步骤
- java计算税后工资switch语句_计算个人所得税!switch语句
- 导航地图2_自定义标注
- 如何在Visual Studio中安装.net6.0 或者 将在Visual Studio中将.net 5.0更新为6.0
- IBM Rational AppScan保存报告时提示错误的解决方案
- loaded the xxx nib but the view outlet was not set 错误的解决办法。
- HTML一键打包APK工具_安卓app封装_H5打包安卓APP