blue_pen 发表于 2014-12-8 23:32:23

BinGoo系列之《Socket通讯之服务端+客户端》

本帖最后由 blue_pen 于 2014-12-25 12:38 编辑

BinGoo系列之《Socket通讯之服务端+客户端》
* 简介:基于底层socket的服务端监听,非TcpListener,代码量精简,本片文章提供上篇文章提到的客户端更新源码(说明简介在封装类的开头)* 功能介绍:基于底层的Socket服务端监听,监听客户端连接,接收客户端发送的数据,发送数据给客户端,心跳包(代码已注释,根据需要将代码取消注释)* socket服务端监听封装类的调用三步:* 1、初始化:* int port=5100* TCPServer _tcpServer=new TCPServer(port);* * 2、创建委托接收数据方法并绑定(可根据需求定义),此类暂时定义了四种接收数据的委托:返回接收客户端的数据,返回客户端连接状态和监听状态,返回错误信息,返回客户端数量的委托* * ①申明返回接收数据信息的委托方法* DelegateHelper.TcpServerReceive= 自定义方法;* * ②申明返回状态信息的委托方法* DelegateHelper.TcpServerStateInfo= 自定义方法;* * ③申明放回错误信息的委托方法* DelegateHelper.TcpServerErrorMsg = 自定义方法;* * ④申明返回客户端数量档位委托方法* DelegateHelper.ReturnClientCountCallBack = 自定义方法;* * 3、启动监听和关闭监听* _tcpServer.Start();*_tcpServer.Stop();
代码截图及demo运行效果图:1、服务端代码总行数预览图
不超过300行代码2、代码片段预览图

服务端压力测试效果图

客户端效果图

500个客户端连接使用内存大约40多M

源码版本会随时更新,请注意更新时间

2014-11-27更新内容
1:修复socket服务端Stop停止方法,改进停止监听后断开所有客户端,并终止所有处于WaitSleepJoin状态的线程,防止客户端一直处于阻塞状态,无法判断服务器是否终止监听


2014-11-29更新内容
1:新增状态消息码,根据消息码来判断消息类型

2:解决改进部分代码浪费CPU资源方法


3:修改客户端"接收数据委托方法"绑定的代码错误

下面的源码包含《SocketHelper.dll的更新源码》,以及《第一版本源码+demo》



SocketHelper服务端及客户端封装源码及案例源码下载:

Dennes0899 发表于 2020-5-12 16:19:17

Thank for you share

sky5567 发表于 2020-5-21 14:07:30

支持了,正需要学习
页: [1]
查看完整版本: BinGoo系列之《Socket通讯之服务端+客户端》