完美发送大对象可用于.NetCompact Framework 及 .Net Framework的Socket库

第一次在这里发贴,请大家多多关照.本次发贴的目的有三:一是为了和交流;二是共同学习;三是虚心请教.废话不说了.直接进入正题:

以前也做过一些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事件中取得


posted @ 2009-09-17 14:56  Nii Jyeni  阅读(495)  评论(8编辑  收藏  举报