libtnet

高性能c++网络库
授权协议 MIT
开发语言 C/C++
所属分类 程序开发、 高性能网络开发库
软件类型 开源软件
地区 国产
投 递 者 骆照
操作系统 Linux
开源组织
适用人群 未知
 软件概览

libtnet是一个用c++编写的高性能网络库,它在设计上面主要参考tornado,为服务端网络编程提供简洁而高效的接口,非常易于使用。

一个简单的Echo例子:

void onConnEvent(const ConnectionPtr_t& conn, ConnEvent event, const void* context)
{
    switch(event)
    {
        case Conn_ReadEvent:
            {
                const StackBuffer* buffer = static_cast(context);
                conn->send(string(buffer->buffer, buffer->count));
            }
            break;
        default:
            break;
    }    
}

int main()
{
    TcpServer s;
    s.listen(Address(11181), std::bind(&onConnEvent, _1, _2, _3));

    s.start();

    return 0;
}

启动shell进行测试

root@tnet:~# telnet 127.0.0.1 11181
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
hello world
hello world
  • 最近在用go语言做一个挂载大量长连接的推送服务器,虽然已经完成,但是内存占用情况让我不怎么满意,于是考虑使用libtnet来重新实现一个。后续我会使用comet来表明推送服务器。 对于comet来说,单机能支撑大量的并发连接,是最优先考虑的事项。虽然现在业界已经有了很多数据,说单机支撑200w,300w,但我还是先把目标定在100w上面,主要的原因在于实际运行中,comet还会有少量逻辑功能,我得

  • Connection libtnet只支持IPv4 TCP Connection,之所以这么做都是为了使得实现尽可能的简单。我们主要在Connection类中封装了对tcp连接的操作。 Connection继承自std::enable_shared_from_this,也就意味着外部我们会操作其shared_ptr,libtnet几乎所有的对象都采用智能指针的方式来进行内存管理。 当Connect

  • HTTP libtnet提供了简单的http支持,使用也很简单。 一个简单的http server: void onHandler(const HttpConnectionPtr_t& conn, const HttpRequest& request) { HttpResponse resp; resp.statusCode = 200; resp.setContentTy

  • libtnet是一个用c++编写的高性能网络库,它在设计上面主要参考tornado,为服务端网络编程提供简洁而高效的接口,非常易于使用。 Echo Server void onConnEvent(const ConnectionPtr_t& conn, ConnEvent event, const void* context) { switch(event) { c

  • IOLoop libtnet采用的是prefork + event loop的架构方式,prefork就是server在启动的时候预先fork多个子进程同时工作,而event loop则是基于epoll的事件处理机制。 在最新的linux系统中,提供了timerfd,eventfd,signalfd,加上原先的socket,大部分功能都可以抽象成io事件来处理了。而在libtnet中,这一切的基础

  • libtnet是一个用c++编写的高性能网络库,它在设计上面主要参考tornado,为服务端网络编程提供简洁而高效的接口,非常易于使用。 Echo Server void onConnEvent(const ConnectionPtr_t& conn, ConnEvent event, const void* context) { switch(event) { c

  • c++网络库libtnet解析相同url的看法 libtnet库在linux环境上是一个较快的http的库,但是网上的使用教程非常的少,在之前看到的高性能C++网络库libtnet实现:http,文章简单的讲解了关于libtnet库的使用,但在实际的开发过程中,遇到了不少url是相同的问题,这就需要去头部的其他地方去找到不一致的地方去进行过滤。 content-type中的过滤 在使用回调函数的时

 相关资料
  • 我正在研究一个基于代理的流行病模型。这个想法是单个代理根据他们在网络中观察到的情况(基于距离)做出决定。我在每个代理中都有几个功能,可以动态更新受感染接触者的数量,接触者表现出特定行为等。 下面的代码用于计算代理网络中受感染的联系人。 至少还有3个这样的函数可以保持表示代理网络中其他功能的其他代理的计数。现在,当我 有没有一种计算效率更高的方法来跟踪更大人口的网络统计数据?

  • 问题内容: 我正在选择一个网络库来实现不能花费任何微秒时间的客户端/服务器系统。它将实现自己的协议来发送和接收消息。我正在寻找一个好的NIO框架,该框架将使我能够轻松开发服务器和客户端,而不必过多担心低层选择器的细节。每个人都向我推荐Netty,但在向团队提出框架之前,我想尝试2或3个其他选择。我不太喜欢Netty的一件事是它如何使用自己的ByteBuf实现和引用计数来处理ByteBuffer。谁

  • 准备 测试环境 在以下几种环境下进行测试: Kubernetes集群node节点上通过Cluster IP方式访问 Kubernetes集群内部通过service访问 Kubernetes集群外部通过traefik ingress暴露的地址访问 测试地址 Cluster IP: 10.254.149.31 Service Port:8000 Ingress Host:traefik.sample-

  • 随着技术的发展,企业的正常运行越来越依赖基于线上网络的应用,所以IT部门需要持续监控和改善网络性能,保持用户始终不受网络性能影响,并快速,平稳地交付关键业务解决方案。

  • 注意:本章属于 Docker 高级配置,如果您是初学者,您可以暂时跳过本章节,直接学习 Docker Compose 一节。 本章将介绍 Docker 的一些高级网络配置和选项。 当 Docker 启动时,会自动在主机上创建一个 docker0 虚拟网桥,实际上是 Linux 的一个 bridge,可以理解为一个软件交换机。它会在挂载到它的网口之间进行转发。 同时,Docker 随机分配一个本地未

  • 1、快速配置指南 下面是一个跟 Docker 网络相关的命令列表。 其中有些命令选项只有在 Docker 服务启动的时候才能配置,而且不能马上生效。 -b BRIDGE or –bridge=BRIDGE –指定容器挂载的网桥 –bip=CIDR –定制 docker0 的掩码 -H SOCKET… or –host=SOCKET… –Docker 服务端接收命令的通道 –icc=true|fal