当前位置: 首页 > 软件库 > 程序开发 > 网络工具包 >

tcpdaemon

tcpdaemon是一个TCP通讯服务端平台/库
授权协议 LGPL
开发语言 C/C++
所属分类 程序开发、 网络工具包
软件类型 开源软件
地区 国产
投 递 者 陆城
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

tcpdaemon
=========

# 0.快速开始 #
老师交给小明一个开发任务,实现一个TCP网络迭代并发服务器,用于回射任何接收到的通讯数据。小明很懒,他在开源中国项目库里搜到了开源库tcpdaemon来帮助他快速完成任务。首先他安装好tcpdaemon,然后写了一个C程序文件test_callback_echo.c

    $ vi test_callback_echo.c
    #include "tcpdaemon.h"
    
    _WINDLL_FUNC int tcpmain( struct TcpdaemonServerEnvirment *p_env , int sock , void *p_addr )
    {
        char    buffer[ 4096 ] ;
        long    len ;
        
        len = recv( sock , buffer , sizeof(buffer) , 0 ) ;
        if( len <= 0 )
            return len;
        
        len = send( sock , buffer , len , 0 ) ;
        if( len < 0 )
            return len;
        
        return 0;
    }

他编译链接成动态库test_callback_echo.so,最后用tcpdaemon直接挂接执行

    $ tcpdaemon -m IF -l 0:9527 -s test_callback_echo.so -c 10 --tcp-nodelay --logfile $HOME/log/test_callback_echo.log

OK,总共花了五分钟,圆满完成老师作业。老师说这个太简单了,小明你给我改成像Apache经典的Leader-Follow服务端模型,小明说没问题,他把启动命令参数`-m IF`改成了`-m LF`,再次执行,完成老师要求,总共花了五秒钟。老师问你怎么这么快就改好了,小明说全靠开源项目tcpdaemon帮了大忙啊 ^_^

# 1.概述 #
tcpdaemon是一个TCP通讯服务端平台/库,它封装了众多常见服务端进程/线程管理和TCP连接管理模型(Forking、Leader-Follow、IO-Multiplex、WindowsThreads Leader-Follow),使用者只需加入TCP通讯数据收发和应用逻辑代码就能快速构建出完整的TCP应用服务器。

服务模型模型说明
Forking : 单进程主守护,每当一条TCP新连接进来后,接受之,创建子进程进入回调函数tcpmain处理之。一条连接对应一个子进程(短生命周期)
Leader-Follow : 单进程管理进程,预先创建一组子进程(长生命周期)并监控其异常重启。子进程等待循环争抢TCP新连接调用回调函数tcpmain处理之
IO-Multiplex : 单进程主守护,IO多路复用等待TCP新连接进来事件、TCP数据到来事件,TCP数据可写事件,调用回调函数tcpmain处理之
WindowsThreads Leader-Follow : 同Leader-Follow,区别在于预先创建一组子线程而非子进程

tcpdaemon提供了三种与使用者代码对接方式:(注意:.exe只是为了说明自己是可执行文件,在UNIX/Linux中可执行文件一般没有扩展名)
回调模式 : tcpdaemon.exe+user.so(tcpmain) | 可执行程序tcpdaemon通过启动命令行参数挂接用户动态库,获得动态库中函数tcpmain指针。当建立TCP连接后 或 IO多路复用模式下当可读可写事件发生时 调用回调函数tcpmain
主调模式 : user.exe(main,tcpmain)+libtcpdaemon.a(tcpdaemon) | 用户可执行程序user.exe隐式链接库libtcpdaemon.a。用户函数main(user.exe)初始化tcpdaemon参数结构体,并设置回调函数tcpmain,调用函数tcpdaemon(libtcpdaemon.so)。当建立TCP连接后 或 IO多路复用模式下当可读可写事件发生时 调用回调函数tcpmain
主调+回调模式 : user.exe(main)+libtcpdaemon.a(tcpdaemon) + user.so(tcpmain) | 同上,区别在于用户函数main不直接设置回调函数tcpmain而设置user.so文件名。函数tcpdaemon负责挂接动态库user.so并获得函数tcpmain指针

一般简单情况下,使用者采用回调模式即可,只要编写一个动态库user.so(内含回调函数tcpmain)被可执行程序tcpdaemon挂接上去运行。如果使用者想订制一些自定义处理,如初始化环境,可以采用主调模式,实现函数main里把自定义参数传递给tcpdaemon穿透给tcpmain。如果想实现运行时选择回调函数tcpmain则可以采用主调+回调模式。

  • 1.2.2 2017-06-06 calvin 封装更多的IO多路复用代码进tcpdaemon,使用者用tcpmain返回值设置等待事件 IO多路复用模型新增超时机制 1.概述 tcpdaemon是一个TCP通讯服务端平台/库,它封装了众多常见服务端进程/线程管理和TCP连接管理模型(Forking、Leader-Follow、IO-Multiplex、WindowsThreads Leader-

  • tcpdaemon 0.快速开始 老师交给小明一个开发任务,实现一个TCP网络迭代并发服务器,用于回射任何接收到的通讯数据。小明很懒,他在开源中国项目库里搜到了开源库tcpdaemon来帮助他快速完成任务。首先他安装好tcpdaemon,然后写了一个C程序文件test_callback_echo.c $ vi test_callback_echo.c #include "tcpdaemon.h"

  • tcpdaemon 0.快速开始 老师交给小明一个开发任务,实现一个TCP网络迭代并发服务器,用于回射任何接收到的通讯数据。小明很懒,他在开源中国项目库里搜到了开源库tcpdaemon来帮助他快速完成任务。首先他安装好tcpdaemon,然后写了一个C程序文件test_callback_echo.c $ vi test_callback_echo.c #include "tcpdaemon.h"

  • tcpdaemon 详细介绍 tcpdaemon ========= 0.快速开始 老师交给小明一个开发任务,实现一个TCP网络迭代并发服务器,用于回射任何接收到的通讯数据。小明很懒,他在开源中国项目库里搜到了开源库tcpdaemon来帮助他快速完成任务。首先他安装好tcpdaemon,然后写了一个C程序文件test_callback_echo.c $ vi test_callback_echo

  • 1.2.1 2017-06-04 calvin * 修正了服务模型IOMP的多进程没有轮流切换主侦听问题 1.2.0 2017-06-03 calvin * 重整了代码,有少许接口与老版本不兼容 * 新增服务模型IOMP,支持Linux环境 0.快速开始 老师交给小明一个开发任务,实现一个TCP网络迭代并发服务器,用于回射任何接收到的通讯数据。小明很懒,他在开源中国项目库里搜到了开源库tcpd

 相关资料
  • tcp 服务端 tcp 服务端 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//** 程序清单:tcp 服务端 * * 这是一个 tcp 服务端的例程 * 导出 tc

  • GoBelieve IM云平台服务端,采用 Go 语言开发,有运行稳定,高并发,易扩展的特点。 GoBelieve IM云平台特色: 支持点对点消息, 群组消息, 聊天室消息 支持集群部署 单机支持50w用户在线 单机处理消息5000条/s 支持超大群组(3000人)

  • 0.自我介绍 1.介绍项目里一个关于文件系统的(因为该部门主要是linux编程调优相关 2.平时用哪些linux命令 3.有没有接触过linux编程 算法 很简单的一道题 大概是一个"aa bbb aa0aa fsadfas"这样的串,求合法单词的最大长度,即不包含数字的单词 最后反问问题后,我简历里写了“能积极google解决问题”,他就问了kxsw相关的,这种一下子还真不知道该不该说。 整个过

  • 本文向大家介绍Python TCP通信客户端服务端代码实例,包括了Python TCP通信客户端服务端代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了Python TCP通信客户端服务端代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 TCP客户端: TCP服务端: 以上就是本文的全部内容,希望对大家的学习有所帮助,也希

  • 服务管理平台是一个开发者使用的平台,它能够通过可视化配置,自动生成接口服务,同时为了安全性和差异化服务,加入了接口权限控制功能,同时一键发布到数据汇总平台,并查看相关帮助文档,接口参数等信息。最后全程监控服务调用过程,记录相关日志服务信息,确保系统稳定,排查系统异常,同时提供相关接口调用统计分析数据。 服务的功能架构如下: 四个模块之间通过接口服务串联起来。     1. 首先需要进行服务配置,配

  • 问题内容: 是否可以在一个应用程序中绑定和侦听Linux中的多个端口? 问题答案: 对于您要收听的每个端口,您: 使用创建一个单独的套接字。 将其绑定到适当的端口。 调用套接字,以便它设置一个侦听队列。 那时,您的程序正在侦听多个套接字。为了接受这些套接字上的连接,您需要知道客户端要连接到哪个套接字。就是这样。碰巧的是,我有代码可以完全做到这一点,所以这是一个完整的经过测试的示例,它等待多个套接字

  • 创建 TCP 服务器 使用最简单的方法来创建一个 TCP 服务器,使用所有默认选项如下所示: NetServer server = vertx.createNetServer(); 配置 TCP 服务器 如果你不想默认值,可以将服务器配置通过传入一个NetServerOptions实例来创建它: NetServerOptions options = new NetServerOptions().s

  • 我正在尝试构建一个服务器,它可以响应来自TCP或UDP客户端的输入。 TCP客户端 UDP客户端 谢谢你的帮助。