用线程池技术和快速json解析技术重写Tcp socket server程序

c++11发布后,有许多新技术用于帮助c++重新焕发生机。我也用线程池技术和快速json解析技术重写Tcp socket 
server程序,效率和安全性得到很大的提升。
(cmm_owms) [root@xiaoqi-api-server bin]# ./EntrySvr_v2 &
[1] 22836
(cmm_owms) [root@xiaoqi-api-server bin]# built on time=20200514-1152

(cmm_owms) [root@xiaoqi-api-server bin]# ./tcpclt 
2020-05-14 11:52:56.379 D tcpclt[22847] util.cpp:303 operator() | Stamp thread started!
2020-05-14 11:52:56.380 I tcpclt[22847] EventPoller.cpp:449 EventPollerPool | EventPoller[] has:8
2020-05-14 11:52:56.380 D tcpclt[22847] tcpclt.cpp:12 TestClient | 
2020-05-14 11:52:56.381 I tcpclt[22847] WorkThreadPool.cpp:38 WorkThreadPool | WorkThreadPool[] has:8
2020-05-14 11:52:56.382 I tcpclt[22847] tcpclt.cpp:20 onConnect | success
2020-05-14 11:52:58.384 D tcpclt[22847] tcpclt.cpp:24 onRecv | {"action":"redirect","svrip":"47.115.190.122","svrport
":17030} from port:16081

2020-05-14 11:53:00.385 D tcpclt[22847] tcpclt.cpp:24 onRecv | {"action":"redirect","svrip":"47.115.190.122","svrport
":17030} from port:16081

2020-05-14 11:53:02.387 D tcpclt[22847] tcpclt.cpp:24 onRecv | {"action":"redirect","svrip":"47.115.190.122","svrport
":17030} from port:16081

^C2020-05-14 11:53:03.292 D tcpclt[22847] tcpclt.cpp:15 ~TestClient | 
2020-05-14 11:52:48.697 I EntrySvr_v2[22836] TcpServer.h:295 start_l | TCP Server listening on 0.0.0.0:16081
2020-05-14 11:52:56.382 D EntrySvr_v2[22836] EntrySvr.cpp:26 EchoSession | 
2020-05-14 11:52:56.704 D EntrySvr_v2[22836] EntrySvr.cpp:120 onManager | 
2020-05-14 11:52:58.384 T EntrySvr_v2[22836] EntrySvr.cpp:111 onRecv | recv[]=@@1{"action":"redirect","devid":"
A68000011809SN000320","vid":"0001","pid":"A680","devtype":"5"}##

2020-05-14 11:52:58.384 T EntrySvr_v2[22836] EntrySvr.cpp:55 msgProc | msg[]={"action":"redirect","devid":"
A68000011809SN000320","vid":"0001","pid":"A680","devtype":"5"}

2020-05-14 11:52:58.384 T EntrySvr_v2[22836] EntrySvr.cpp:101 msgProc | send[]={"action":"redirect","svrip":"47.115.
190.122","svrport":17030}

2020-05-14 11:52:58.705 D EntrySvr_v2[22836] EntrySvr.cpp:120 onManager | 
2020-05-14 11:53:00.385 T EntrySvr_v2[22836] EntrySvr.cpp:111 onRecv | recv[]=@@1{"action":"redirect","devid":"
A68000011809SN000320","vid":"0001","pid":"A680","devtype":"5"}##

2020-05-14 11:53:00.385 T EntrySvr_v2[22836] EntrySvr.cpp:55 msgProc | msg[]={"action":"redirect","devid":"
A68000011809SN000320","vid":"0001","pid":"A680","devtype":"5"}

2020-05-14 11:53:00.385 T EntrySvr_v2[22836] EntrySvr.cpp:101 msgProc | send[]={"action":"redirect","svrip":"47.115.
190.122","svrport":17030}

2020-05-14 11:53:00.704 D EntrySvr_v2[22836] EntrySvr.cpp:120 onManager | 
2020-05-14 11:53:02.387 T EntrySvr_v2[22836] EntrySvr.cpp:111 onRecv | recv[]=@@1{"action":"redirect","devid":"
A68000011809SN000320","vid":"0001","pid":"A680","devtype":"5"}##

2020-05-14 11:53:02.387 T EntrySvr_v2[22836] EntrySvr.cpp:55 msgProc | msg[]={"action":"redirect","devid":"
A68000011809SN000320","vid":"0001","pid":"A680","devtype":"5"}

2020-05-14 11:53:02.387 T EntrySvr_v2[22836] EntrySvr.cpp:101 msgProc | send[]={"action":"redirect","svrip":"47.115.
190.122","svrport":17030}

2020-05-14 11:53:02.705 D EntrySvr_v2[22836] EntrySvr.cpp:120 onManager | 
2020-05-14 11:53:03.292 W EntrySvr_v2[22836] EntrySvr.cpp:116 onError | end of file
2020-05-14 11:53:03.292 D EntrySvr_v2[22836] EntrySvr.cpp:29 ~EchoSession | 
2020-05-14 11:53:03.292 D EntrySvr_v2[22836] EntrySvr.cpp:29 ~EchoSession | 
2020-05-14 11:55:19.397 T EntrySvr_v2[22836] TcpServer.h:142 ~TcpServer | start clean tcp server...
2020-05-14 11:55:19.397 T EntrySvr_v2[22836] TcpServer.h:147 ~TcpServer | clean tcp server completed!
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb2750
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb2ee0
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb3380
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb3820
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb3c60
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb4160
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb45d0
2020-05-14 11:55:19.397 I EntrySvr_v2[22836] EventPoller.cpp:94 ~EventPoller | 0x1eb4a40
2020-05-14 11:55:19.398 I EntrySvr_v2[22836] logger.cpp:57 ~Logger | 
[1]+  已完成                  ./EntrySvr_v2

上述测试表明,EntrySvr_v2已经测试通过。可以快速解析json字符串,可以用thread 
pool来快速处理socket连接请求,以及最终安全释放线程池!
项目地址:
https://github.com/freeman1974/TcpSvr
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草根大哥

进军大神程序员路上,谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值