三年,三年,又三年,终于,终于,终于不用再等啦!就在今天,HP-Socket for Linux v1.0 震撼发布!还是一样的接口,一样的高效,一样的简便,一样的味道。
    HP-Socketfor Linux提供了与Windows版本一致的API接口,实现代码则完全独立。HP-Socket for Linux使用了C++14标准的新特性,需要GCC 5.x以上版本的编译器来编译。发布包中提供了HP-Socket组件及示例Demo的VisualStudio项目工程,安装配置好Visual Studio的Visual C++ for Linux Development插件后即可自行编译。当然,你也可以自己编写Makefile文件来编译这些代码。
    注:HP-Socket for Linux的编译和运行需要2.6.32及以上版本的Linux内核。

HP-Socket提供以下几类组件,详细内容请参考《HP-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
-----------------+------------------------------------------------

工作流程

  1. 创建监听器对象
  2. 创建组件对象(并绑定监听器)
  3. 启动组件
  4. 连接远程主机(仅用于Agent组件)
  5. 处理通信事件(OnConnect/OnReceive/OnClose ......)
  6. 停止组件(可选,第7步销毁组件对象前会先停止组件)
  7. 销毁组件对象
  8. 销毁监听器对象

示例代码

  • 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 震撼发布相关推荐

  1. MongoDB数据库泄露8亿电邮地址;微软开源Windows计算器;Linux 5.0 Kernel发布丨Q新闻...

    本周要闻:华为正式宣布起诉美国政府:360 首席安全官谭晓生宣布离职:阿里开源 Flutter 应用框架 Fish Redux:微软开源 Windows 计算器:Linux 5.0 Kernel 发布 ...

  2. Slackware Linux 14.0 RC5 发布

    Slackware Linux 发布 14.0 RC5 版本,下载地址: slackware-current-install-dvd.iso (2,320MB, MD5) slackware64-cu ...

  3. oracle 8.0版本下载,Oracle Linux 8.0 发布

    早在5月初,就在Red Hat Enterprise Linux 8.0发布之前,我们看到了Oracle Linux 8的公测版,而今天,Oracle Linux 8.0已经升级到稳定的版本,并且已经 ...

  4. Windows Socket和Linux Socket编程的区别

    2019独角兽企业重金招聘Python工程师标准>>> 1.一些常用函数的移植 http://www.vckbase.com/document/viewdoc/?id=1586 2. ...

  5. php socket keepalive,linux keepalive探测对应用层socket api的影响

    问题 大部分人都知道tcp的keepalive. 假设读者知道keepalive会如何触发. 这篇文章想讨论keepalive触发后, 对socket使用者的影响. keepalive设置 修改/et ...

  6. Fastsocket:高扩展性的 Socket 以及 Linux 内核的底层网络实现

    目录 简介 安装编译 测试结果 GitHub README 介绍 参加者 安装 从源安装 开关内核 系统配置 用法 合适的场景### 如何使用 演示服务器 评价 Nginx的 HAProxy 在线评估 ...

  7. linux怎么连接两个服务器,一个服务器端同时创建两个socket连接 linux

    不可不知 Linux操作系统网络服务器模型 Linux系统网络服务器模型主要有两种:并发服务器和循环服务器. 所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻 ...

  8. 【网络编程入门】使用socket在Linux下实现即时通信软件

    使用socket在Linux下实现即时通信软件 在前一篇文章中讲到了如何使用winsock:[网络编程入门]在C++中使用Windows TCP Sockets,也算是勉强入门了吧,接下来自己写一下在 ...

  9. socket in Linux

    socket in Linux Socket编程界面由4BSD UNIX首先提出,目的是解决网间网进程通信问题.Socket接口为进程间通信提供了一种新的手段,它不但能用于同一机器中的进程之间的通信, ...

最新文章

  1. 京东热点key探测系统发布,单机 QPS 提升至 37 万
  2. JMM(Java内存模型)
  3. html jq移到出现内容,jquery操作html元素之( 获得内容和属性)
  4. 第四十四期:1.3万亿条数据查询如何做到毫秒级响应?
  5. 前端网页广告无线翻滚_从小白到web前端工程师进阶之路 从0到1到更深
  6. uwsgi和nginx的故事
  7. Spring框架中IoC(控制反转)的原理
  8. SQL水平测试题目(一)
  9. redhat 5.4 yum配置
  10. Codeforces Round #224 (Div. 2)
  11. ASP.NET3.5下的MSChart图表控件使用
  12. volte的sip信令流程_VOLTE-SIP代码详解及SIP流程图解
  13. windows7系统损坏修复_火绒安全警报:微软发布高危漏洞补丁 火绒“漏洞修复”模块已完成升级...
  14. html设置编剧,编剧必备之电影剧本创作六大基本步骤
  15. java计算税后工资switch语句_计算个人所得税!switch语句
  16. 导航地图2_自定义标注
  17. 如何在Visual Studio中安装.net6.0 或者 将在Visual Studio中将.net 5.0更新为6.0
  18. IBM Rational AppScan保存报告时提示错误的解决方案
  19. loaded the xxx nib but the view outlet was not set 错误的解决办法。
  20. HTML一键打包APK工具_安卓app封装_H5打包安卓APP

热门文章

  1. ILSVRC 2015-VID数据集下载解压记录
  2. MATLAB常用的适应度的函数
  3. ArcGIS创建矢量
  4. 如何在dynamo中使用Python编程
  5. 微信小程序调用豆瓣电影API(详细)
  6. 做项目管理很累,应该怎么缓解
  7. 钣金材料是通信产品结构设计中最常用的材料
  8. 关于汽车行业生产仿真(物流仿真)的必要性论述
  9. 《第七周任务二》设计complex,使实部和虚部的类型为定义对象时用的实际类型
  10. 南京渣硕求职路(网易美团头条百度面经)+Java学习路线(拙见)