作者: Blue_Pen
查看: 668472|回复: 2599
打印 上一主题 下一主题

[源码] 【C#Socket】BinGoo系列之Socket组件《三、客户端+服务端组件...

  [复制链接]
跳转到指定楼层
楼主
查看: 668472|回复: 2599
本帖最后由 Blue_Pen 于 2018-4-25 12:21 编辑

BinGoo系列之Socket组件《三、客户端+服务端组件的封装》
控件版
简介:
  • 【C#原生Socket网络通讯】BinGoo系列之Socket服务端+客户端 之后,进一步封装的原生socket网络通讯组件。
  • 在此之前的版本还是要写一部分绑定委托事件代码,新版通讯类库将所有的消息机制全部封装成事件。
  • 只需拖动组件至窗体,直接双击组件注册事件,无需再写有关socket的代码,你只需要处理接收的数据。

说明:
此通讯类库封装了AxTcpServer、AxTcpClient、AxUdpClient三大通讯组件


2016-10-20新增ITcpServer、ITcpClient两个组件,该组件采用异步传输处理方式,高效数据并发,开启和关闭方法和AxTcpServer、AxTcpClient用法一致
详细更新信息请跳转至更新日志详细说明
1.AxTcpServer介绍
  • TCP服务端,和之前的类库用法差不多,启动时只需在组件属性栏中设置好监听IP,端口。
  • 启动代码:AxTcpServer.Start();停止监听代码:AxTcpServer.Stop();
  • 预览图:


2.AxTcpClient介绍:
  • TCP服务端,在属性界面设置好服务端IP和端口。
  • 启动时代码AxTcpClient.StartConnection();
  • 预览图:


3.AxUdpClient介绍:
  • UDP客户端,在属性界面设置好服务端IP和端口。
  • 启动时代码AxUdpClient.Start();
  • 预览图:



更新日志:
更新日期:2015-05-29
  • 优化传输协议,所有消息以原始数据byte[]数组类型接收,不做任何处理。
  • UDP新增属性“IsAxUdpClientAgreement”:是否使用内部传输协议,若使用则两边的客户端都必须使用这个组件来传输文件,若不使用内部协议则可接受任意UDP客户端传输过来的原始数据。
  • Demo新增是否以十六进制显示数据和是否以十六进制发送数据

以下是更新版本:
更新时间:2015-11-30
修复局部问题,心跳包检测机制,踢出已断开的客户端
里面ClientModel.cs文件中可根据自己需求修改判断客户端类型
更新时间:2016-01-14
修改TCPClient的StopConnection方法,更稳定
修改其他局部小细节
更新时间:2016-04-24
修复断开连接清除客户端BUG
TCPServer服务端新增自动识别WebSocket客户端,可与WebSocket客户端直接通讯
修改其他变量名称定义
更新时间:2016-8-05
修复关闭线程BUG
添加TCPServer和TCPClient的使用案例
添加WebSocket客户端与TCPServer服务端直接通讯案例,参见如下附录1:
附带1:此乃君临写的WebSocket客户端,通讯效果如下图所示



更新时间:2016-10-20
1、新增ITcpServer服务端组件和ITcpClient客户端组件
属性以及用法基本没有改变,优点:数据采用异步传输,高性能并发
2、数据处理事件可直接操作UI,无须再写委托或Invoke。
3、修改局部属性名称,修复心跳检测机制
之前的AxTcpServer和AxTcpClient任然保留。
附带压力测试Demo,经测试5000个客户端无压力,以下是测试截图


更新时间:2016-10-25
1、修复双击注册时,参数类型意外改变

更新时间:2016-11-28
1、修复ITcpClient发送数据方法
2、修复ITcpClient连接状态改变事件的Bug

更新时间:2018-04-25
1、正式改名为NetWorkHelper
2、新增常用方法,
如文件操作类FileHelper,
实体类与XML互转XmlHelper、常用的Byte、二进制、十进制、十八等数字,数组字符串之间的转换类、
系统常用功能类等
2、修复ITcpClient重连Bug及其他代码优化



本帖中所有组件各版本源码统一网盘中下载,【异步通讯高性能并发版本及其他个版本】网盘下载地址

游客,如果您要查看本帖隐藏内容请回复










评分

参与人数 23金钱 +33 收起 理由
xisuhong + 1
ppgouppgou + 1 正式改名为NetWorkHelper 的 dll 能弄个调.
abweixx + 2 很给力!
a729467 + 1 感谢分享,LZ辛苦了~
风动旛动 + 1
percent10 + 1 感谢LZ对论坛做出的贡献~
496407151 + 1 很给力!
wujing7390 + 1
wsxkit + 1 赞一个!
YNWL + 1
wangshansong + 1
Jowen + 5
webfly2017 + 1 感谢分享,LZ辛苦了~
dudu + 1 感谢分享,LZ辛苦了~
flasder + 1
venus5712 + 1 感谢分享,LZ辛苦了~
spaceman_3 + 1
xulong20006 + 2
jingqia + 1 感谢LZ对论坛做出的贡献~
benleo + 1 感谢分享,LZ辛苦了~

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏53 转播转播
回复 论坛版权

使用道具 举报

沙发
 楼主| Blue_Pen 发表于 2015-6-11 09:16:19 | 显示全部楼层
娃哈哈 发表于 2015-6-10 21:59
.net是什么版本的?

此源码是2.0下开发的,如果你需要4.0的,你可以自己打开源码重新选择4.0版本重新编译
板凳
 楼主| Blue_Pen 发表于 2015-6-23 21:50:28 | 显示全部楼层
hcljq 发表于 2015-6-23 14:00
Pen大,对于socket控件的使用中,我发现一个问题,就是客户端上下线的事件触发,如果我是正常的连接,断开 ...

这个你要做一个服务端心跳包检测,每隔一段时间发一个数据给客户端,发送成功则认为在线,发送不成功则认为下线,这个是你认为关闭客户端,肯定不会触发客户端下线事件
地板
 楼主| Blue_Pen 发表于 2015-6-29 18:39:15 | 显示全部楼层

可以
5#
 楼主| Blue_Pen 发表于 2015-7-8 09:09:03 | 显示全部楼层
feiyangapp 发表于 2015-7-8 00:11
结束时调用 tcpserver.stopConnection() 假死,结束不掉为何。

案例都不会。
6#
 楼主| Blue_Pen 发表于 2015-10-21 14:33:30 | 显示全部楼层
喵帕斯 发表于 2015-10-20 16:38
请问这个有心跳包吗

TCP服务里面有个客户端列表ClientSocketList
自己写一个定时器,定时向所有客户端列表发送一个数据,发送失败则认为是断开连接,实现心跳包
7#
 楼主| Blue_Pen 发表于 2015-10-31 09:16:47 | 显示全部楼层
hcljq 发表于 2015-10-29 11:45
能不能增加一个,服务端发消息到所有客户端上呢

这个基础控件,我也是在这基础上自己写一个方法,在接收数据事件中创建线程for循环客户端列表,发送给客户端
8#
 楼主| Blue_Pen 发表于 2015-11-3 09:55:13 | 显示全部楼层
jingqia 发表于 2015-11-2 15:47
发现了一个问题:客户端已建立连接,服务端断开连接后再次开启监听,客户端在线数会加1

提个小建议:建议 ...

我是自己写了一个线程来实现心跳包来实现监听客户端的在线状态,至于你说的可以和其他客户互相发送消息,那是自己定义协议,服务端接收到消息,根据协议自己解析转发给客户端,也是自己写方法实现。这个是TCP客户端和服务端的基础控件,这个控件封装的是最基本,要扩张需要自己去写方法。
9#
 楼主| Blue_Pen 发表于 2016-2-6 21:15:09 | 显示全部楼层
imfe 发表于 2016-2-4 20:47
最新版和老版本的demo不通用,导致很多问题不知道怎么解决,例如发消息收不到 ...

新版的demo没做
10#
 楼主| Blue_Pen 发表于 2016-2-24 09:41:26 | 显示全部楼层
十一月的萧邦 发表于 2016-2-21 23:00
DEMO 有bug呀   TCP服务端无法向客户端发送数据

demo是最早的,现在只更新dll类库
您需要登录后才可以回帖 登录 | 加入CSkin博客

本版积分规则

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

Powered by Discuz! X3.2  © 2001-2013 Comsenz Inc.  Designed by ARTERY.cn
GMT+8, 2024-5-6 22:02, Processed in 0.662191 second(s), 34 queries , Gzip On.

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