简单实现android和wp聊天
2013-08-23 13:40
295 查看
使用Beetle.NetPackage简单实现android和wp聊天
Beetle.NetPackage是一个多台平开源Client TCP通讯组件,它针对不同平台提供统一的消息描述规则和使用规范可以简单实现多平台下TCP通讯交互.下而介绍通过Beetle.NetPackage简单实地现android和wp聊天.在了解下面的内容之前可以先到Beetle.NetPackage的开源项目了解一下:https://beetlenp.codeplex.com/作为一个网络通讯程序首要是制定一个协议明确有那些消息交互,在Beetle.NetPackage中所有协议描述都必须通过对象来描述,并实现一个基础的流读写接口IMessage.聊天需要制定两个消息分别就是登陆和发言.下面分别看一下这两个消息在android和wp下的实现.
android
public class Login implements IMessage { public String Name; @Override public void Load(IDataReader stream) throws Exception { // TODO Auto-generated method stub Name = stream.ReadUTF(); } @Override public void Save(IDataWriter stream) throws Exception { // TODO Auto-generated method stub stream.WriteUTF(Name); } } public class Talk implements IMessage { public String Name; public String Agent; public String Content; @Override public void Load(IDataReader stream) throws Exception { // TODO Auto-generated method stub Name = stream.ReadUTF(); Agent = stream.ReadUTF(); Content = stream.ReadUTF(); } @Override public void Save(IDataWriter stream) throws Exception { // TODO Auto-generated method stub stream.WriteUTF(Name); stream.WriteUTF(Agent); stream.WriteUTF(Content); } }
WP8
public class Login:Beetle.NetPackage.IMessage { public string Name; public void Load(Beetle.NetPackage.IDataReader reader) { Name = reader.ReadUTF(); } public void Save(Beetle.NetPackage.IDataWriter writer) { writer.WriteUTF(Name); } } public class Talk:Beetle.NetPackage.IMessage { public string Name; public string Content; public string Agent; public void Load(Beetle.NetPackage.IDataReader reader) { Name = reader.ReadUTF(); Agent = reader.ReadUTF(); Content = reader.ReadUTF(); } public void Save(Beetle.NetPackage.IDataWriter writer) { writer.WriteUTF(Name); writer.WriteUTF(Agent); writer.WriteUTF(Content); } }
消息描述完成后就针对协议解释对象实现相应的Package
android
public class ChatPackage extends Package { @Override protected void WriteMessageType(IDataWriter writer, IMessage message) throws Exception { // TODO Auto-generated method stub writer.WriteUTF(message.getClass().getSimpleName()); } @Override protected IMessage GetMessage(IDataReader reader) throws Exception { // TODO Auto-generated method stub String name= reader.ReadUTF(); if(name.equals("Talk")) { return new Talk(); } else if(name.equals("Login")) { return new Login(); } return null; } }
wp8
public class ChatPackage:Beetle.NetPackage.Package { protected override void WriteMessageType(Beetle.NetPackage.IDataWriter writer, Beetle.NetPackage.IMessage message) { writer.WriteUTF(message.GetType().Name); } protected override Beetle.NetPackage.IMessage GetMessage(Beetle.NetPackage.IDataReader reader) { string name = reader.ReadUTF(); switch (name) { case "Talk": return new Talk(); case "Login": return new Login(); } return null; } }
定义了消息和协议解释对象后就可以通过NetClient创建服务端的连接,由于Beetle.NetPackage只是Client端的实现服务就根据自己的需要来编写了,这里方便演示就使用了Beetle作为服务端来进行测试.
android
?
?
两者定义基于一致,但wp8下NetClient有个LittleEndian属性需要设置,主要原因是android是java数值存储是Big-Endian;而.net默认是Little-Endian因此对应属性要设置False.在编写服务端的时候也应该注意到这一点.以上通讯功能就基础完成,对于数据发送和接收紧紧是消息对象的定义和调用就不多说,详情可以下载源码来了解一下.
最终看下例子运行的效果:
下载完整代码:NPChat.rar (2.68 mb)
相关文章推荐
- 使用Beetle.NetPackage简单实现android和wp聊天
- android Socket实现简单聊天功能以及文件传输
- Android实现简单的蓝牙聊天功能
- Android(安卓)一个简单的聊天界面的实现(eclipse实现)
- Android客户端简单的聊天程序实现
- android 使用websocket 实现简单的聊天。
- android蓝牙实现简单的聊天的功能
- 基于socket实现的简单聊天android软件
- Unity3D 实现简单的语音聊天 [Android版本]
- Unity 实现简单的语音聊天 [Android版本]
- Android基于socket实现的简单C/S聊天通信功能
- android 客户端简单的聊天程序实现
- 基于Socket的Android与PC简单聊天应用的实现
- android客户端简单的聊天程序实现
- android Socket实现简单聊天小程序
- android实验三 简单聊天记录的设计与实现
- Android——聊天布局Adapter的简单实现
- 在android中用socket聊天的简单实现
- 基于socket的android聊天工具简单实现
- Android-万能 Adapter 封装(实现textview,imageView 的简单封装,封装 jar 包)