上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 26 下一页
摘要: 在新版本的Beetle.NetPackage中提供了对Protobuf和Controller的支持,所以在WP8下使用Beetle.NetPackage进行基于TCP的数据交互则一件非常简单事情.下面通过组件在WP8下简单实现基于TCP通讯的订单在线查询功能.协议定义为了简化交互数据的处理在这里使用Protobuf来描述数据交互,通过Protobuf制订一系列的请求和应答对象来代替平常在TCP下繁琐的数据流处理过程.下面通过Protobuf来描述订单查询的通讯协议. 1 [ProtoContract] 2 public class GetCustomer 3 { 4 ... 阅读全文
posted @ 2013-09-23 09:57 beetlex 阅读(1364) 评论(2) 推荐(2) 编辑
摘要: 在编写Android应用的时候经常需要做的事情就是对View的数据进行设置,在Android下设置控件相对.net来说是件麻烦的事情,首先根据ID从view把控件找出来然后才能设置相应属性值;如果数据成员多那这些工作的是繁锁的事情。下面通过java提供的reflect的功能实现数据自动绑定功能。 在实现之前先描述一下实现的功能效果。 传统方式: 1 EditText editor = (EditText)v.findViewById(R.id.orders_orderid); 2 editor.setText(item.getOrderID()); 3 ... 阅读全文
posted @ 2013-09-03 10:54 beetlex 阅读(8473) 评论(0) 推荐(3) 编辑
摘要: Protobuf的设计非常适用于在网络通讯中的数据载体,它序列化出来的数据量少再加上以K-V的方式来存储数据,对消息的版本兼容性非常强;还有一个比较大的优点就是有着很多的语言平台支持。下面讲解一下如何在TCP通讯应用中集成Protobuf. Protobuf提供一种简单的对象消息方式来描述数据的存储,通过相关实现可以简单地实现数据流和对象之间的转换。但由于Protobuf序列化后的信息并不包括一些相应对象类型描述,只有消息体的内容;因此在进行通信交互过程中默认情况是不知道这些数据和对象的对应关系;既然对方不清楚这些数据对应那种类型,那数据还源成对象就根本没办法入手。所以把Protobuf... 阅读全文
posted @ 2013-08-28 14:45 beetlex 阅读(8840) 评论(0) 推荐(1) 编辑
摘要: 一般所谓的TCP粘包是在一次接收数据不能完全地体现一个完整的消息数据。TCP通讯为何存在粘包呢?主要原因是TCP是以流的方式来处理数据,再加上网络上MTU的往往小于在应用处理的消息数据,所以就会引发一次接收的数据无法满足消息的需要,导致粘包的存在。处理粘包的唯一方法就是制定应用层的数据通讯协议,通过协议来规范现有接收的数据是否满足消息数据的需要。在应用中处理粘包的基础方法主要有两种分别是以4节字描述消息大小或以结束符,实际上也有两者相结合的如HTTP,redis的通讯协议等。在平时交流过程发现一些朋友即使做了这些协议的处理,但有时在处理数据的时候也会出现数据不对的情况。这主要原因他们在一些个别 阅读全文
posted @ 2013-08-27 13:52 beetlex 阅读(49757) 评论(10) 推荐(7) 编辑
摘要: Beetle.NetPackage是一个多台平开源Client TCP通讯组件,它针对不同平台提供统一的消息描述规则和使用规范可以简单实现多平台下TCP通讯交互.下而介绍通过Beetle.NetPackage简单实地现android和wp聊天.在了解下面的内容之前可以先到Beetle.NetPackage的开源项目了解一下:https://beetlenp.codeplex.com/ 作为一个网络通讯程序首要是制定一个协议明确有那些消息交互,在Beetle.NetPackage中所有协议描述都必须通过对象来描述,并实现一个基础的流读写接口IMessage.聊天需要制定两个消息分别就是登陆... 阅读全文
posted @ 2013-08-23 10:20 beetlex 阅读(1684) 评论(1) 推荐(3) 编辑
摘要: 在编写SQL的时候经常需要对SQL进行拼接,拼接的方式就是直接String+处理,但这种情况有个不好的地方就是不能对SQL进行参数化处理。下面介绍一种就算基于String +的方式也可以进行SQL参数处理。常见的SQL拼接id =3;"select * from orders where employeeid="+id;这样存在的问题是相当明显的就是SQL注入,如果需要参数化那在编写代码的时候就相对多了些工作。下面介绍通过以上的编写方式自动实现参数化功能。自动参数化处理id=3;SQL sql="select * from orders where empoyee 阅读全文
posted @ 2013-08-15 12:59 beetlex 阅读(7448) 评论(6) 推荐(6) 编辑
摘要: Beetle.NetPackage是一个多平台Client Socket TCP通讯组件(Apache License 2.0),组件制统一的对象协议制定规则,可以灵活方便地通过对象来描述TCP通讯交互。现有支持平台有Flash,.NET和Android。组件为了统一编写规范制定了不同语言平台下访问TCP服务的统一处理规则;分别有协议描述规范和消息处理控制。不同语言平台下都提供了一致的对象和接口主要包括:IMessage,Packge,INetClientHandler和NetClient等。IMessage消息描述接口,所有通讯消息必须实现相关规则。flashpublic class Reg 阅读全文
posted @ 2013-08-14 10:36 beetlex 阅读(2457) 评论(2) 推荐(3) 编辑
摘要: 由于前段时间在使用ServiceStack.Redis感觉不怎么方便和其代码实现也不理想所以就产生编写一个Redis .Net Client的想法(毕竟自己动手丰衣足食啊).实现的目的就是可以更简单了操作Redis并提供更多的数据处理方式如:String,json和Protobuf等。在操作Redis其实是通过TCP等方式来处理,所以它和其他网络服务一样有一个交互协议;Redis的交互协议比较怪异,第一次看感觉制定这协议很不合理……不过理解下来协议总体来说还是比较简单。Redis的通讯协议可以说大集汇了……消息头标识,消息行还有就行里可能还有个数据块大小描述.首先Redis是以行来划分,每行以 阅读全文
posted @ 2013-08-09 10:53 beetlex 阅读(24334) 评论(1) 推荐(3) 编辑
摘要: 做网络通讯中数值传输是很普遍的事情,但数值的存储在不平台和硬件上存储方式都不一样,主要有两大类分别是高位和低位存储;而.net平台下是低位存储,通过.net提供的函数读写是低位也不提供设置;对于高位存储的就有比较流行的语言平台有Java。由于存储不一样所以在读取和写入的时候就需要另一方面做转换。在.net下其实简单地通过反转数组或移位存储的方式可以简单的进行高位转换。不过程序已经写好了而在读写的时候用了低位,又不想修改读写代码可以简单地通过以下函数对数值转换一下即可.代码(在一个老外网站找到的)class Endian { public static short SwapI... 阅读全文
posted @ 2013-07-26 23:05 beetlex 阅读(3031) 评论(1) 推荐(2) 编辑
摘要: 由于client资源限制,只进行了300物体互动广播测试;物体活动频率是每秒20次,服务器每秒转发的消息量大概180W条。转发消息结构: class Po : IMessage { public int ID; public short X; public short Y; public short Type; public void Load(BufferStream reader) { ID = reader.ReadInt(); X = reader... 阅读全文
posted @ 2013-07-21 20:35 beetlex 阅读(1239) 评论(4) 推荐(0) 编辑
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 26 下一页