本帖最后由 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服务端及客户端封装源码及案例源码下载: |