以前也做过一些Socket方面的项目不过一直没有很好的解决发送大对象的问题.在网上也找到不少这方面的资料.不过大多是指出一些思路或是用于文件传输的.要么没有直观的代码和框架. 要么不便于扩展.终于鼓起勇气自己写了一下.当然也参考了不少资料,其中有不少是从codeproject搜索到的.
先来看看该库都涉及哪些类
最主要的类有三个
SocketConnection:用于存储连接信息及收发数据
SocketConnectionHost:用于管理连接,可由他派生出服务类和客户类
SocketConnectionCreator:连接创建器.已由该类派生出监听类和连接类
对象传送原理:
建立连接后
发送方->传送信息头并等待接收方应答(超时则发送失败)
发送方->循环传送信息片段等待接收方应答(超时则发送失败)
接收方->等待信息头(无限等待)
接收方->收到信息头,应答发送方,开始等待信息片段(超时则发送失败)
支持5个基本事件
Connected
新连接加入
Disconnected
连接断开
Received
收到来自某连接的信息
Sent
信息已发送
Exception
发生异常
基本使用方法
client.AddConnector("8888", new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888), 3, 3000);
client.Start();
server.AddListener("8888", new IPEndPoint(IPAddress.Any, 8888));
server.Start();
var string = "sdfsdfdf";
connection.BeginSend(Encoding.UTF8.GetBytes(string));
注:connection 是在Connected事件中取得