tcpdaemon 更新至 v1.2.1 , TCP 通讯服务端平台/库

1.2.1 2017-06-04 calvin

* 修正了服务模型IOMP的多进程没有轮流切换主侦听问题

1.2.0 2017-06-03 calvin

* 重整了代码,有少许接口与老版本不兼容
* 新增服务模型IOMP,支持Linux环境

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应用服务器。

...

文章转载自 开源中国社区 [http://www.oschina.net]

时间: 2024-09-11 09:22:46

tcpdaemon 更新至 v1.2.1 , TCP 通讯服务端平台/库的相关文章

TCP 通讯服务端平台/库 tcpdaemon 更新至 v1.2.2

1.2.2 2017-06-06 calvin 封装更多的IO多路复用代码进tcpdaemon,使用者用tcpmain返回值设置等待事件 IO多路复用模型新增超时机制 1.概述tcpdaemon是一个TCP通讯服务端平台/库,它封装了众多常见服务端进程/线程管理和TCP连接管理模型(Forking.Leader-Follow.IO-Multiplex.WindowsThreads Leader-Follow),使用者只需加入TCP通讯数据收发和应用逻辑代码就能快速构建出完整的TCP应用服务器.

tcpdaemon —— 特定进程模型下的TCP连接管理

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

在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分

编程|网络|异步 ///////////////////////////////////////////////////////////////////////////////////////////* 标题:在C#中使用异步Socket编程实现TCP网络服务的C/S的通讯构架(一)----基础类库部分 当看到.NET中TcpListener和TcpClient的时候,我非常高兴,那就是我想要的通讯模式但是使用之后发现它们的力量太单薄了,我们需要一个更好的类库来替代它们. 下面提供了一些类,可以

tcp 广域网-关于不同局域网TCP通讯的问题

问题描述 关于不同局域网TCP通讯的问题 两台PC,A和B,分别处于不同的局域网中,均通过路由器上网,假设A作为服务端,B作为客户端 要如何设置端口映射?网上搜了一下,大多数意见表示, 1.PC A 只能是公网,也就是直接使用ADSL拨号上网,再映射端口,PC B 才能连接到A 2.PC A 申请运营商的静态IP,PC B则可直接连接到A,不需要端口映射 但是如果A和B都是在局域网中,要如何实现,仅仅是在A的路由器上映射端口,B是不是无法发起连接和正常通讯? 解决方案 必须需要一台公网服务器,否

安卓手机(客户端)与PC(服务端)进行TCP通讯 可是ipv4地址老变 怎么办

问题描述 安卓手机(客户端)与PC(服务端)进行TCP通讯 可是ipv4地址老变 怎么办 换台电脑测试结果又不行了 ipv4不对 有没有让服务端自己设置一个固定IP 然后让客户端来连接 这样在哪台PC上都OK了 解决方案 服务器的IP地址你设置成固定的,或者用公网合法IP,绑定域名等.防止变化 解决方案二: 国内没有固定ip,需要映射域名,可以使用花生壳之内的软件

mina-Android TCP通讯使用Mina时Connection refused

问题描述 Android TCP通讯使用Mina时Connection refused 01-16 15:02:13.796: W/System.err(14805): org.apache.mina.core.RuntimeIoException: Failed to get the session. 01-16 15:02:13.800: W/System.err(14805): at org.apache.mina.core.future.DefaultConnectFuture.getS

gprs-SIM808的GPRS在使用TCP通讯时,调用AT+CIPCLOSE无法使服务器断开连接

问题描述 SIM808的GPRS在使用TCP通讯时,调用AT+CIPCLOSE无法使服务器断开连接 目前在使用SIM808模块与云端服务器进行通信,服务器是HTTP Server,使用TCP 进行通信,如果使用移动4G卡,不会出现有时模块调用AT+CIPCLOSE指令后,服务器那边显示TCP仍处于连接状态的情况.而如果使用联通物联网卡,或者普通卡,就会 出现不时的出现模块调用AT+CIPCLOSE之后,服务器那边显示TCP仍处于连接状态 的情况. 各位大神,你们遇到过这种情况吗?这种情况怎么解决

tcp-MS-DOS下TCP通讯种类?

问题描述 MS-DOS下TCP通讯种类? 有的MS-DOS系统C:下只有TCP目录,能实现通讯. 有的C:下只有NET目录,能实现socket通讯.而C:TCP目录下和C:NET目录下的东西也有区别. 请问,MSDOS下,有几种通讯协议包?都实现了什么功能? 解决方案 MS-DOSMS-DOS头部 解决方案二: 计算机一般由TCP通信和UDP报文通信两种,当然还有流通信. 解决方案三: socket通信是TCP基础,还有UDP通信协议

boost asio 异步实现tcp通讯

---恢复内容开始--- asioboost   目录(?)[-] 一前言 二实现思路 通讯包数据结构 连接对象 连接管理器 服务器端的实现 对象串行化   一.前言 boost asio可算是一个简单易用,功能又强大可跨平台的C++通讯库,效率也表现的不错,linux环境是epoll实现的,而windows环境是iocp实现的.而tcp通讯是项目当中经常用到通讯方式之一,实现的方法有各式各样,因此总结一套适用于自己项目的方法是很有必要,很可能下一个项目直接套上去就可以用了.   二.实现思路