C# SocketHelper 源码
玄机论坛Socket类库源码+Demo
本类库采用C# TcpLister,TcpClient高度封装,
采用C# NetworkStream进行异步模式读取数据.
采用C# Semaphore来进行并发控制,
我使用的是同步方式连接,海量数据并发不是靠异步就能解决的问题,在对学习Socket和想快速使用Socket的朋友来说,同步是很好的选择.
使用IOCP的Socket类正在测试阶段,稳定,排除BUG后一样会分享给大家.
可同时接受5000+连接同时访问,而CPU消耗完全忽略不计..
本着代码简洁,简单.通俗易懂的原则,进行代码封装,不像其他通信框架写很多各式各样的接口.对新手朋友和刚接触通信程序的朋友带来很大的困扰.
本代码完全开源,但请保留署名,以示尊重.!
下面我和大家一起来分享这个类库的使用方式.
服务端的调用
先来看下服务端的界面
<ignore_js_op>
第一个列表框用来获取服务端状态信息.
第二个列表框用来获取客户端发来的消息.
一个下来列表框来记录客户端上线.边上的0来记录当前连接数
界面非常简洁,咱们来看类库的使用方式.
第一步,引入命名空间
当引用xuanjiSocket类库以后,请添加
[C#] 纯文本查看 复制代码
1 |
|
添加服务端类.如果没有引入命名空间,那么可以将鼠标光标置于类变量中,按快捷键 Shift + Alt + F10 自动引入类库命名空间
[C#] 纯文本查看 复制代码
1 |
|
[C#] 纯文本查看 复制代码
1 2 3 4 5 |
|
在窗体加载事件中,完成对server变量的初始化.
SocketHelper.pushSockets = new SocketHelper.PushSockets(Rec);
这是本类非常重要的委托变量.
它的作用就是推送所有信息.!请在Start前对其初始化.!
[C#] 纯文本查看 复制代码
1 2 3 |
|
这是处理推送器消息的方法.!
SocketHelper.Sockets
大家可以看下这个自定义对象
[C#] 纯文本查看 复制代码
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
|
每个属性都有注释,来解释这个属性的作用..具体处理细节.请下载demo阅读
上面那些信息绝非无用,而是整个类的重中之重以及消息处理方式.
启动类库,并开始监听
[C#] 纯文本查看 复制代码
1 2 |
|
之前在窗体加载时已经初始化过变量,现在直接使用它的InitSocket来配置服务端.使用Start方法启动监听.!
默认调用后便认为监听成功.!
如若其他情况,例如异常时: 会推送监听失败消息至服务端Rev方法中.具体参阅源码.
停止服务端
直接调用Stop方法即可停止服务端.Stop方法调用后,可继续启动服务端.!
至此,服务端的描述就介绍完了,使用非常简单,
你要做的就下面几件事:
1 、 声明服务端变量。
2 、 初始化推送器。
3 、 配置服务端。
4 、 启动服务端
服务端发送信息
服务端有两个自带方法
[C#] 纯文本查看 复制代码
1 |
|
该方法将会对所有连接至服务端的客户端发送消息.如果在发送中客户端下线或发生异常,服务端将维护客户端集合 ClientList
ClientList 会在客户端接入时添加.如果发生异常等情况会自动删除
[C#] 纯文本查看 复制代码
1 |
|
像单独某位客户发起数据.
当客户端连接时,除去ClientList会自动维护列表外,也会将客户端推送至UI界面,供大家组合自己想要的客户端列表.详细请阅读demo
客户端介绍
<ignore_js_op>
客户端与服务端一样,需要先声明客户端变量,
[C#] 纯文本查看 复制代码
1 |
|
接着初始化推送器,
[C#] 纯文本查看 复制代码
1 |
|
配置客户端,启动客户端.
[AppleScript] 纯文本查看 复制代码
1 2 |
|
客户端发送方法,与服务端一致.调用Send方法.调用Start方法来连接服务器,调用Stop方法断开连接.支持断开后重新连接服务端
最后来一张运行时的截图吧
<ignore_js_op>
运行截图.jpg (250.42 KB, 下载次数: 6)
Demo + 类库下载地址:
玄机论坛Socket类库源码 当前版本 2.6.3 更新日期:10-09/2015
http://bbs.msdn5.com/thread-27-1-1.html
(出处: C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#)