优秀的国产高性能TCPUDPHTTP开源网络通信框架——HP-Socket

优秀的国产高性能TCPUDPHTTP开源网络通信框架——HP-Socket,第1张

HP-Socket是国人开发的一套高性能的TCP/UDP/HTTP网络通信框架,包含了服务端、客户端以及Agent组件,可用于各种不同应用场景的通信系统,并且提供了C/C++、C#、Delphi、E、Java、Python等编程语言接口。 HP-Socket 对通信层完全封装,应用程序不必关注通信层的任何细节;HP-Socket 提供基于事件通知模型的 API 接口,能非常简单高效地整合到新旧应用程序中。

为了让使用者能方便快速地学习和使用 HP-Socket,迅速掌握框架的设计思 想和使用方法,特此精心制作了大量 Demo 示例(如:PUSH 模型示例、PULL 模型示例、PACK 模型示例、性能测试示例以及其它编程语言示例)。HP-Socket 目前支持 Windows 和 Linux 平台。

以下来自官网提供的文档:

应用程序可以根据不同的容量要求、通信规模和资源状况等现实场景调整 HP-Socket 的 各项性能参数(如:工作线程的数量、缓存池的大小、发送模式和接收模式等),优化资源 配置,在满足应用需求的同时不必过度浪费资源。

提供官方文档的目录截图,由于文档非常详细,就不一一介绍了

下面是一张官方提供的demo项目结构,除了C/C++,还提供了C#、Delphi、E,详细的内容都在github的仓库中,感兴趣的可以去看看。

HP-Socket凭借着通用性、易用性、高性能、伸缩性可以应用到各种场景,而且官方提供了大量的Demo可供学习,以及非常详细的PDF文档,除了支持主流的编程语言,还支持E(易语言)。如果你有更好的推荐或者建议欢迎到评论区留言分享!

Author: 柳大·Poechant(钟超)Email: zhongchao.ustc@gmail.comBlog: Blog.CSDN.net/PoechantDate: April 21th, 20121 TCPServer 框架概述POCO 库提供TCPServer框架,用以搭建自定义的 TCP 服务器。TCPServer维护一个连接队列、一个连接线程池。连接线程用于处理连接,连接线程只要一空闲就不断地从连接队列中取连接并进行处理。一旦连接线程从连接队列中取到一个连接,就会创建一个TCPServerConnection连接对象,并且调用该对象的start()方法,直到start()方法返回,这个连接对象就被删除了。连接线程的数量是动态的,其取决于连接队列中排队的连接数。当然,你使用的时候可以设定连接队列的最大容量,以防止在高并发应用的服务器上出现连接太多而使连接队列溢出的悲剧发生。当连接队列满了,却还有新的连接到来时,新来的连接就会被立即悄无声息地关闭。// PoechantTCPConnection.h #ifndef POECHANT_TCP_CONNECTION_H #define POECHANT_TCP_CONNECTION_H #include "Poco/Net/TCPServerConnection.h" #include "Poco/Net/StreamSocket.h" #include <string>class PoechantTCPConnection: public TCPServerConnection { public: PoechantTCPConnection(const StreamSocket&s, const std::string&arg1, int arg2, double arg3)void run()private: std::string _arg1int _arg2double _arg3}#endif 实现如下:// PoechantTCPConnection.cpp #include "PoechantTCPConnection.h" #include "Poco/Util/Application" #include "Poco/Timestamp.h" #include "Poco/Exception.h" #include "Poco/DateTimeFormatter.h" PoechantTCPConnection(const StreamSocket&s, const std::string&arg1, int arg2, double arg3): TCPServerConnection(s), _arg1(arg1), _arg2(arg2), _arg3(arg3) { } void run() { Application&app = Application::instance()// 日志输出连接的TCP用户的地址(IP和端口) app.logger().information("Request from " + this->socket().peerAddress().toString())try { // 向客户端发送数据,这里以发送一个表示时间的字符串为例 Timestamp nowstd::string dt(DateTimeFormatter::format(now, _format))dt.append("\r\n")socket().sendBytes(dt.data(), (int) dt.length())} catch (Poco::Exception&e) { app.logger().log(e)} } 2.3 PoechantTCPConnectionFactory工厂模式不必多说,名字唬人,其实非常非常简单(准确的说设计模式大部分名字都唬人,但大部分都很有用,设计模式本身并不牛B,能把设计模式抽象提炼出来成我们现在认为很简单的这些模式的那几个人很牛B)。


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/493358.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-06-14
下一篇2023-06-14

发表评论

登录后才能评论

评论列表(0条)

    保存