开发者论坛

 找回密码
 注册 (请使用非IE浏览器)
查看: 6800|回复: 2

[源码] BinGoo系列之《Socket通讯之服务端+客户端》

[复制链接]

0

精华

4

贡献

17

赞扬

帖子
13
软币
256
在线时间
14 小时
注册时间
2013-6-26
发表于 2014-12-8 23:32:23 | 显示全部楼层 |阅读模式
本帖最后由 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、服务端代码总行数预览图
QQ截图20141107105821.png
不超过300行代码
2、代码片段预览图

QQ截图20141108232445.png
QQ截图20141108232404.png
QQ截图20141108232421.png
服务端压力测试效果图
服务端程序.png

客户端效果图
客户端程序.png
500个客户端连接使用内存大约40多M
内存.png


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

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


2014-11-29更新内容
1:新增状态消息码,根据消息码来判断消息类型
N4_4M3CYSWAKW8_{F1M9A%O.jpg
2:解决改进部分代码浪费CPU资源方法


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

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



SocketHelper服务端及客户端封装源码及案例源码下载:
SocketHelper SocketHelperDemo20141129.zip (149.83 KB, 下载次数: 210)
回复

使用道具 举报

0

精华

0

贡献

5

赞扬

帖子
16
软币
161
在线时间
9 小时
注册时间
2019-2-11
发表于 2020-5-12 16:19:17 | 显示全部楼层
Thank for you share
回复

使用道具 举报

0

精华

0

贡献

13

赞扬

帖子
10
软币
115
在线时间
4 小时
注册时间
2020-4-25
发表于 2020-5-21 14:07:30 | 显示全部楼层
支持了,正需要学习
回复

使用道具 举报

Archiver|手机版|小黑屋|开发者网 ( 苏ICP备08004430号-2 )
版权所有:南京韵文教育信息咨询有限公司

GMT+8, 2024-12-22 19:25

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表