高性能C++网络库libtnet实现:IOLoop】的更多相关文章

IOLoop libtnet采用的是prefork + event loop的架构方式,prefork就是server在启动的时候预先fork多个子进程同时工作,而event loop则是基于epoll的事件处理机制. 在最新的linux系统中,提供了timerfd,eventfd,signalfd,加上原先的socket,大部分功能都可以抽象成io事件来处理了.而在libtnet中,这一切的基础就是IOLoop. 类似于tornado,libtnet的IOLoop也提供了相似的接口.其中最核心…
Connection libtnet只支持IPv4 TCP Connection,之所以这么做都是为了使得实现尽可能的简单.我们主要在Connection类中封装了对tcp连接的操作. Connection继承自std::enable_shared_from_this,也就意味着外部我们会操作其shared_ptr,libtnet几乎所有的对象都采用智能指针的方式来进行内存管理. 当Connection创建成功之后,会通过IOLoop的addHandler接口,将其绑定到ioloop上面: Co…
HTTP libtnet提供了简单的http支持,使用也很简单. 一个简单的http server: void onHandler(const HttpConnectionPtr_t& conn, const HttpRequest& request) { HttpResponse resp; resp.statusCode = 200; resp.setContentType("text/html"); resp.body.append("Hello Wor…
最近在用go语言做一个挂载大量长连接的推送服务器,虽然已经完成,但是内存占用情况让我不怎么满意,于是考虑使用libtnet来重新实现一个.后续我会使用comet来表明推送服务器. 对于comet来说,单机能支撑大量的并发连接,是最优先考虑的事项.虽然现在业界已经有了很多数据,说单机支撑200w,300w,但我还是先把目标定在100w上面,主要的原因在于实际运行中,comet还会有少量逻辑功能,我得保证在单机挂载100w的基础上,完全能无压力的处理这些逻辑. CometServer Test 首先…
libtnet是一个用c++编写的高性能网络库,它在设计上面主要参考tornado,为服务端网络编程提供简洁而高效的接口,非常易于使用. Echo Server void onConnEvent(const ConnectionPtr_t& conn, ConnEvent event, const void* context) { switch(event) { case Conn_ReadEvent: { const StackBuffer* buffer = static_cast<co…
博客列表页:http://blog.fishlee.net/tag/fslib-network/ 原创FSLib.Network库(目前专注于HTTP的高性能高易用性网络库) FSLib.Network网络库使用教程[1] 基本使用 FSLib.Network网络库使用教程[2] 实例教程·美女们快到硬盘里来! 放一个抓取网页的信息监控小工具源码 原创FSLib.Network库发布 1.4 版8 12306订票客户端 FOR .NET 演示项目 [1]项目概况 12306订票客户端 FOR .…
Github 主页 https://github.com/panjf2000/gnet 欢迎大家围观~~,目前还在持续更新,感兴趣的话可以 star 一下暗中观察哦. 简介 gnet 是一个基于 Event-Loop 事件驱动的高性能和轻量级网络库.这个库直接使用 epoll 和 kqueue 系统调用而非标准 Golang 网络包:net 来构建网络应用,它的工作原理类似于两个开源的网络库:libuv 和 libevent. 这个项目存在的价值是提供一个在网络包处理方面能和 Redis.Hap…
Cowboy.WebSockets 是一个托管在 GitHub 上的基于 .NET/C# 实现的开源 WebSocket 网络库,其完整的实现了 RFC 6455 (The WebSocket Protocol) 协议标准,并部分实现了 RFC 7692 (Compression Extensions for WebSocket) 协议标准. WebSocket 可理解为建立在 TCP 连接通道上的更进一步的握手,并确定了消息封装格式. 通过定义控制帧 (Control Frame) 和数据帧…
(1)ACE 庞大.复杂,适合大型项目.开源.免费,不依赖第三方库,支持跨平台. http://www.cs.wustl.edu/~schmidt/ACE.html (2)Asio Asio基于Boost开发的异步IO库,封装了Socket,简化基于socket程序的开发. 开源.免费,支持跨平台. http://think-async.com/ (3)POCO POCO C++ Libraries 提供一套 C++ 的类库用以开发基于网络的可移植的应用程序,功能涉及线程.线程同步.文件系统访问…
Poco::Net库中有 FTPClient HTML HTTP HTTPClient HTTPServer ICMP Logging Mail Messages NetCore NTP OAuth Reactor Sockets DatagramSocket DatagramSocketImpl DialogSocket MulticastSocket RawSocket RawSocketImpl ServerSocket ServerSocketImpl Socket SocketImpl…