摘要: 一般在对字符进行编码的时候都会使用Encoding.GetBytes方法来进行,但当你在使用该方法的时候有没了解这个方法呢?其实Encoding.GetBytes提供了很多方法不过一般都会直接使用Encoding.GetBytes(string).那使用这个方法会有什么问题呢?通过反编译工具看一下这个方法的实现代码.public virtual byte[] GetBytes(string s){ if (s == null) { throw new ArgumentNullException("s", Environment.GetResourceString(" 阅读全文
posted @ 2012-04-26 13:58 beetlex 阅读(2696) 评论(7) 推荐(0) 编辑
摘要: 之前介绍Beetle的应用都是基于自定义消息,那给人的感就是这个组件只能做这方面的用途.其实Beetle只是一个基础的Tcp组件,在它的基础上可以完成其他协议通讯上的工作.以下是通过Beetle简单地制作一个http代理服务器,为了验证这个代理服务器的功能编写这文章也是通过http代理服务器来提交.以下描述Beetle实现这个功能. 首先Beetle并没有提供Http协议的封装,为了对http协议进行分析必须实现一个简单的http协议分析器.组件提供了Package基础类和其扩展的EofDataOfPackage和HeadSizeOfPackage;http是一种基于结束符的协方方式,可... 阅读全文
posted @ 2012-04-19 14:28 beetlex 阅读(1554) 评论(3) 推荐(2) 编辑
摘要: Silverlight带了Combox控件,但这个控件只能选择不能编辑,虽然它能定义Item外观,但如果下拉选择是一个DataGrid控件似乎就不好定义了.还好Silverlight提供了一个灵活的Popup控件,通过它能实现类似于ComboGrid的功能. 先看一下需要的功能效果: 我们需要在选择项后自动地把选择的数据填充到相关性的两个TextBox中.实现这个功能我们选择了TextBox,Button和一个自定义的Popup DataGrid用户控件.由于Popup只负责显示但我们需要解决一些总是,就是当Popup显示的时候点击自身或其他区域就自动关闭,所以需用要把Popup Da... 阅读全文
posted @ 2012-04-16 11:02 beetlex 阅读(2190) 评论(0) 推荐(1) 编辑
摘要: 在tcp通讯中为了数据安全在某些情况下对数据进行加密传输是很有必要的,可惜的是MS并没有为Silverlight提供一些标准的加密功能实现.如果你想在Silverlight中使用RSA或DES这些标准的加密算法,那真的不好意思MS并没有提供...不过我们可以使用一些基于Silverlight开源实现的加密库,以下就是一个开源的RSA加密库http://scrypt.codeplex.com. RSA是一种非对称加密算法,它提供数据加密和签名的功能.Rsa的加解密都用不同的密钥,所以即使你有加密的密钥也无法对加密的数据进行解密(相对解密成本).如果想破解加密数据那必须要把别一方的密钥破解,... 阅读全文
posted @ 2012-04-13 11:44 beetlex 阅读(2848) 评论(1) 推荐(4) 编辑
摘要: 最近在用Silverligh做一个网络文件管理程序,但用在设计界面的时候觉得Silverligh默认的button样式太大众化了,所以就产生了自己定义按钮样式的念头.在网络一找的确有很多这方面的文章,但都有一个问题就是只定义了按钮的默认状态的样式.对于mouseover等基本都没有的.还好后来在msdn里找到详细帮助描述.以下就详细讲述Silverligh中定义一个按钮各种状态的样式. 在定义按钮模板前先看下需要的效果通过上面的图需要给按钮制定4种状态:不可用,默认,鼠标移上去,鼠标点下. 先定义不可用图层<Rectangle x:Name="DisabledVisualEle 阅读全文
posted @ 2012-04-09 17:06 beetlex 阅读(2930) 评论(2) 推荐(2) 编辑
摘要: 由于Silverlight可以进行Socket Tcp通讯,所以就产生了一个想法用Silverlight制作一个网盘,而服务端则使用Beetle.网盘大致功能已经实现,不过由于基于浏览器的方式有文件访问安全问题所以不能实现断点传输功能,如果把Silverlight程序设置在浏览器外运行则有更大的文件读写权限.所以上传和下载还在设计中兼容两种情况.以下是现有功能图,除了上传和下载其他基本功能已经完成基础功能演示 sl.henryfan.net 阅读全文
posted @ 2012-04-08 17:05 beetlex 阅读(524) 评论(1) 推荐(0) 编辑
摘要: Silverlight虽然提供了socket功能,但仅仅数据接收和发送的基础功能,你必须还要息制定协议和处理烦脑的粘包问题才能更好地进行信息处理.这里介绍如何通过Beetle.SL这个基于Silverlight socket实现的开源组件如何方便地解决这些问题.下面通过组件在Silverlight下实现一个聊天室程序.聊天室的功能主要是登陆,获取当前其他用户和信息转发. 首先Beetle.SL是支持通过对象来描述tcp通讯协议,只需简单地实现IMessage接收就可以了.以下是制定信息 public class Register:MsgBase { public ... 阅读全文
posted @ 2012-03-29 09:54 beetlex 阅读(2387) 评论(0) 推荐(2) 编辑
摘要: 在Silverlight 一般是采用wcf进行数据通讯,毕竟wcf在数据结构定义上非常方便,但如果你想用Silverlight下的socket进行对象传偷就不得不封装处理一下,在Silverlight下有XML序列化也是非常方便的,但这样会导致消息比较臃肿,同样还要对数据包分析处理包括粘包等工作.如果你要面对这些问题那以下组件也许会给你带来很大的帮助.Beetle.SL是封装Silverlight socket tcp的一个开源组件. 组件封装方便使用的TcpChannel,通过事件定义就能方便进行tcp连接,数据接收事件定义等.更重要的是组件提供灵活的协议分析器,可以根据分析器直接实现... 阅读全文
posted @ 2012-03-26 09:53 beetlex 阅读(2362) 评论(3) 推荐(2) 编辑
摘要: 如果你在写一个Socket Tcp服务,想知道当前的写的服务在数据发送和接收上是不是有着好的性能,不防可以用这个工具测试一下这个工具会向服务端建立1000个连接,根据你设置的间隔和包大小向服务发送信息,服务只需把数据回发即可,延时只是一个参考,因为程序本身是异步和队列处理也会受cpu影响导致一些网络以外的延时情况TcpSocketPerformanceTest.rar (78.33 kb) 阅读全文
posted @ 2012-03-26 08:51 beetlex 阅读(4160) 评论(0) 推荐(0) 编辑
摘要: 其实在.net socket编写高性能稳定方面的资料真的比较少,一个实质性的测试数据结果对比就更少了.我们可以从http://msdn.microsoft.com/zh-cn/magazine/cc163356.aspx看到MS说net 2.0 sp1后的socket通讯能力非常强劲,可以同时挂起6W个IO(可以简单地认为可以在一秒内send+receive可以达到6W或更高),但要找这个数据的测试似乎很难.但在一篇MS关于WCF的性能测试中基于tcp部署的性能在一台4路服务器中可以达到这个量(http://msdn.microsoft.com/en-us/library/bb310550.. 阅读全文
posted @ 2012-03-23 10:06 beetlex 阅读(11084) 评论(25) 推荐(8) 编辑