CSkin博客
标题: 【通讯组件】c#编写的基于Socket的异步通信系统封装DLL [打印本页]
作者: 乔克斯 时间: 2014-7-21 10:11
标题: 【通讯组件】c#编写的基于Socket的异步通信系统封装DLL
SanNiuSignal是一个基于异步socket的完全免费DLL;
- 它里面封装了Client,Server以及UDP;
- 有了这个DLL;用户不用去关心心跳;粘包 ;组包;发送文件等繁琐的事情;
- 大家只要简单的几步就能实现强大的通信系统;
- 能帮助到大家是本人觉得最幸福的事情,也希望大家在用的过程中找出DLL中不足的地方;好改正;
- 此DLL的苹果版和java版正在努力开发中......交流QQ:365368248;
- 此演示源码下载地址: http://pan.baidu.com/s/1o6NVNho 密码: jx6s 里面包括了SanNiuSignal.DLL
- 下面为大家介绍一下 如何使用SanNiuSignal.
1 ) :
- TCPServer服务器,通过静态方法TxStart.startServer注册成功服务器ITxServer;
- 然后通过ITxServer设置好各种属性;
- 最后启动ITxServer.StartEngine();就可以了;
- 具体可以到demo里去看;相对来说比较简单,下面来说一下需要注意的地方
一:
- ITxServer.BufferSize,就是接收数据缓冲区大小;
- 默认为1kb,不要小于50字节,而且要和客户端设置成一样;
- 否则会出现不可预知的错误;这个缓冲区的大小,不会影响你每次发送数据的大小;
- 大小只能提高你的发送速度
二:
- ITxServer.sendMessage 发送前先判断此IPEndPoint客户端是否在线;
- 因为如果不在线等情况发生;此方法没有任何消息产生;如果发送成功并且对方已经收到;会触发发送成功的事件;
三:用户可以通过ITxServer.FileLog记录服务器的运行信息;
2 ) :
- TCPClient客户端,通过静态方法TxStart.startClient(服务器地址或网址, 服务器端口号)注册成功客户端ITxClient;
- 然后通过ITxClient设置好各种属性;最后启动ITxClient.StartEngine();跟服务器启动差不多;具体可以到demo里去看;
客户端要注意的一些地方
- 如果非服务器强制关闭客户端的情况下,掉线的话,客户端默认是要重连的;他的原理是这样的,每10秒重连一次;
- 重连 ITxClient.ReconnectMax次如果失败;会自动关闭客户端引擎;在重连的过程中;你可以改变客户端连接服务器的IP地址和端口号;
- 但如果当断开的时候不想重连;可以设置ITxClient.ReconnectMax=0;
- 登录篇,在引擎启动之前,用户可以设置ITxClient.OutTime来设置超时时间;默认为10秒,也就是说10秒之内肯定会有一个登录结果;登录成功或登录失败。有了登录结果会触发登录结果事件;
3 ) :
- Udp引擎,通过静态方法TxStart.startUdp()注册成功UDP--IUdpTx;然后通过IUdpTx设置好各种属性;
- 最后启动IUdpTx.StartEngine();如果在启动之前要绑定端口号,请在这里设置IUdpTx.Port;否则是随机使用本地端口;
- 无论是UDP还是服务器和客户端;它们的很多方法和属性以及事件都是相同的,因为他们都继承了通信系统的基接口ITxBase;
下面是UDP引擎要注意的地方
一:
- UDP的优势在于速度快但不太可靠;所以有些属性不能设置的太过,如IUdpTx.BufferSize;
- 默认为1KB,如果在广域网上发送信息,缓冲区大小不要超过默认值;否则数据会丢失,如果一次性数据大于1KB;
- 也没事,系统会自动分包发送;不太会丢包。
4 ) :
- 文件发送系统,通过静态方法FileStart.StartFileSend(IFileSendMust)生成一个文件发送系统IFileSend;
- 其中IFileSendMust是必须实现的一个接口;具体参照demo;然后通过IFileSend设置好各种属性;
- 发送还是要通过前面的三个引擎系统发送的;如ITxClient.SendFile 这时会返回一个文件标签,是一个整数;
- IFileSend可以通过操作这个标签来操作这个正在发送的文件;接收文件系统也一样;也是通过文件标签来操作;
- 文件续传也是一样,也要通过前面的三个通信引擎系统进行续传;因为文件系统不能决定用户通过哪个通信系统进行续传的;
- 例如IUdpTx.ContinueFile进行续传;大家也可以试一下 掉线之后重新连接也可以续传;
5 ) :
- 文件接收系统,通过静态方法FileStart.StartFileReceive(IFileReceiveMust)生成一个文件接收系统IFileReceive;
- 其中IFileReceiveMust是接收方必须实现的一个接口;具体参照demo;然后通过IFileReceive设置好各种属性;
下面来讲讲文件系统要注意 的几个要点
一:
每个文件都有一个文件标签,发送系统和接收系统是通过控制这个标签来控制这个文件的;如果是同一个文件传输,标签也一样的;
二:
要注意属性BufferSize缓冲区大小,他是代表一次传送的字节数;如果这个文件缓冲区越大,传输速度越快;具体要设置成多少,大
家自己去调试;TCP传输的话一般可以设置成比较大,但UDP的话这个不要超过1KB;所以传输大文件尽量不要用UDP这种不可靠的东东;
三:
当网络等各种原因中断文件的时候;会触发文件中断事件;文件自动处于暂停发送或接收状态;等待续传;续传的发送方,如果对方
同意续传;对方将不会触发续传开始的方法;别的大家可以通过demo里去发现;
总结:
其实这个DLL相对来讲是比较简单的;大家只要掌握这五个接口;
1:ITxServer TCP服务器接口
2:ITxClient TCP客户端接口
3:IUdpTx
UDP接口
4:IFileSend 文件发送方接口
5:IFileReceive 文件接收方接口
前面三个接口是通过TxStart启动;
后面二个文件接口 是通过FileStart启动
今天先讲到这里,希望这个DLL对大家有所帮助,不足之处希望通过QQ或论坛大家一起交流;谢谢
此演示源码下载地址: http://pan.baidu.com/s/1o6NVNho 密码: jx6s 里面包括了SanNiuSignal.DLL
作者: 佐佑 时间: 2014-8-31 15:20
这么好的东西没人顶么。。
作者: HJL 时间: 2014-9-15 14:32
好东西,正好能用到。
作者: 97043232 时间: 2014-10-6 09:57
本帖最后由 97043232 于 2014-10-6 10:03 编辑
问下 DLL 有源码吗?就是一问
DLL 是4.0框架呀 ,木有2.0吗?
作者: 乔克斯 时间: 2014-10-7 22:06
作者QQ:365368248。详细问题可以直接联系原作者咨询哦。
作者: evilatom 时间: 2014-12-29 15:56
很不错 在使用这个DLL做一些好玩的事情
作者: 乔克斯 时间: 2014-12-29 16:05
【开源通讯组件SanNiuSignal】C#编写的基于Socket的异步通信系统
http://bbs.cskin.net/forum.php?m ... d=501&fromuid=2
(出处: CSkin论坛)
这个DLL已开源。
作者: 黑水无涯 时间: 2015-3-8 00:09
真的好东西,不顶可惜
作者: seling 时间: 2015-8-14 16:06
谢谢分享。
作者: 王者VIP 时间: 2015-9-25 13:02
正好需要这个 太好了
作者: beyondddh 时间: 2016-4-27 20:33
这么好的东西没人顶么。。
作者: beyondddh 时间: 2016-4-27 20:34
这么好的东西没人顶么。。
作者: 乔克斯 时间: 2016-9-13 11:00
顶顶顶
作者: logo005 时间: 2016-9-29 06:51
这个太厉害了,虽然还用不上,迟早有那么一天的
作者: 乔克斯 时间: 2018-4-7 20:28
顶顶顶
作者: 乔克斯 时间: 2018-5-3 15:00
顶顶顶顶~支持
作者: 乔克斯 时间: 2018-5-5 00:50
顶顶顶
作者: 灵雨飘零 时间: 2019-2-25 14:43
太好了太好了太好了太好了
作者: 乔克斯 时间: 2019-3-29 00:57
作者: 乔克斯 时间: 2020-5-11 10:07
作者: 乔克斯 时间: 2020-11-1 18:18
1
作者: zhuyanghua 时间: 2021-11-12 09:34
这个DLL,在服务器上面运行久了会吃掉100%的CPU。无法释放,
欢迎光临 CSkin博客 (http://bbs.cskin.net/) |
Powered by Discuz! X3.2 |