作者: Blue_Pen
查看: 91518|回复: 123

[源码] 【C#Socket】BinGoo系列之Socket组件《二、服务端的类库封装》

  [复制链接]
Blue_Pen 发表于 2014-11-7 12:26:18 | 显示全部楼层 |阅读模式
查看: 91518|回复: 123
本帖最后由 Blue_Pen 于 2016-10-25 13:39 编辑

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:修改客户端"接收数据委托方法"绑定的代码错误


下面是最新的Socket控件组件连接:
【C#原生Socket通讯控件】BinGoo系列之Socket控件TCP+UDP
http://bbs.cskin.net/forum.php?mod=viewthread&tid=874&fromuid=101


下面的源码包含《SocketHelper.dll的更新源码+SocketHelperDemo版源码》
SocketHelper服务端及客户端封装源码及案例源码下载:


评分

参与人数 4金钱 +5 收起 理由
lifeee + 1 感谢分享,LZ辛苦了~
DragonX + 1 感谢分享,LZ辛苦了~
liqi2345241 + 1
乔克斯 + 2 感谢LZ对论坛做出的贡献~

查看全部评分

回复 论坛版权

使用道具 举报

乔克斯 发表于 2014-11-7 12:56:13 | 显示全部楼层
NICE~不错喵。。
 楼主| Blue_Pen 发表于 2014-11-7 14:16:19 | 显示全部楼层

也是这两年开发的总结。。。
xiao32975472 发表于 2014-11-7 14:48:47 | 显示全部楼层
对我很有帮助!
HJL 发表于 2014-11-7 15:00:32 | 显示全部楼层
在本论坛等 socket 相关的文章等了很久了!谢谢分享!~
 楼主| Blue_Pen 发表于 2014-11-7 15:22:35 | 显示全部楼层
HJL 发表于 2014-11-7 15:00
在本论坛等 socket 相关的文章等了很久了!谢谢分享!~

更多精彩请关注Cskin论坛.... ....
iansoft 发表于 2014-11-8 05:11:51 | 显示全部楼层
凌晨进来顶楼主。
hhjj3388 发表于 2014-11-12 14:01:32 | 显示全部楼层
厉害很不错 啊 ·!!!
iansoft 发表于 2014-11-17 01:57:10 | 显示全部楼层
楼主 请问是否能做个 UDP打洞的 socket示例?
 楼主| Blue_Pen 发表于 2014-11-17 09:44:25 | 显示全部楼层
iansoft 发表于 2014-11-17 01:57
楼主 请问是否能做个 UDP打洞的 socket示例?

没时间去研究
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

QQ|申请友链|小黑屋|手机版|Archiver|CSkin ( 粤ICP备13070794号

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-3-28 18:05, Processed in 0.728078 second(s), 34 queries , Gzip On.

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