以C#编写的Socket服务器的Android手机聊天室Demo

  次阅读 来源:互联网(转载协议) 2015-09-28 16:17 我要评论(0)

内容摘要

1.程序架构

2.通信协议

3.服务器源代码

4.客户端源代码

5.运行效果

一、程序架构

在开发一个聊天室程序时,我们可以使用Socket、Remoting、WCF这些具有双向通信的协议或框架。而现在,我正要实现一个C#语言作为服务器 端、Android作为客户端的聊天室。由于服务器端和客户端不是同一语言(C#和java),所有我选择了Socket作为通信协议。

图1.1所示,我们可以看出:android手机客户端A向服务器端发送消息,服务器端收到消息后,又把消息推送到android手机客户端B。

图1.1

二、通信协议

我们知道,在C#语言中使用Socket技术需要 四部曲 ,即 Bind , Listen , Accept , Receive 。然而 Socket编程不像WCF那样面向对象。而且对应每个请求都用同一种方式处理。作为习惯面向对象编程的我来说,编写一个传统的Socket程序很不爽。 绞尽脑汁,我们将数据传输的格式改为json(JavaScript Object Notation 是一种轻量级的数据交换格式),面对对象的问题就解决了。

假设程序的服务契约有两个方法: 登陆 和 发送消息 。调用登陆的方法,就传送方法名(Method Name)为 Logon 的json数据;调用发送消息的方法,就传送方法名为 Send 的json数据。返回的数据中也使用json格式,这样在 android客户端中也能知道是哪个方法的返回值了。

三、服务器源代码

首先需要编写一个处理客户端消息的接口:IResponseManager。

publicinterfaceIResponseManager

{

voidWrite(Socket sender, IList < Socket >cliens, IDictionary < string ,object >param);

}

其次,我们知道,换了是WCF编程的话,就需要在服务契约中写两个方法: 登陆 和 发送消息 。由于这里是Socket编程,我们实现之前写的IResponseManager接口,一个实现作为 登陆 的方法,另一个实现作为 发送消息 的方法。

publicclassLogonResponseManager : IResponseManager

{

publicvoidWrite(System.Net.Sockets.Socket sender, IList < System.Net.Sockets.Socket >cliens, IDictionary < string ,object >param)

{

Console.WriteLine( " 客户端({0})登陆 " , sender.Handle);

var response=newSocketResponse

{

Method=" Logon " ,

DateTime=DateTime.Now.ToString( " yyyy-MM-dd HH:mm:ss " ),

Result=new{ UserName=param[ " UserName " ].ToString() }

};

JavaScriptSerializer jss=newJavaScriptSerializer();

stringcontext=jss.Serialize(response);

Console.WriteLine( " 登陆发送的数据为:{0} " , context);

sender.Send(Encoding.UTF8.GetBytes(context+" \n " ));

}

}

publicclassSendResponseManager : IResponseManager

{

publicvoidWrite(System.Net.Sockets.Socket sender, IList < System.Net.Sockets.Socket >cliens, IDictionary < string ,object >param)

{

Console.WriteLine( " 客户端({0})发送消息 " , sender.Handle);

var msgList=param[ " Message " ]asIEnumerable < object > ;

本站部分文章来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

    teamLab创始人猪子寿之: 抛去衣食住行,我还剩下什么?

  • Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

    Michael I. Jordan带你解读百万奖金ATEC蚂蚁人工智能大赛

  • 2018深圳国际人工智能展览会 2018 shenzhen International Artif

    2018深圳国际人工智能展览会 2018 shenzhen International Artif

  • Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

    Oculus公布原型机,大幅度提升可视角,能实现140°的视场水平

网友点评网友点评
阅读推荐阅读推荐

据外媒报道,STEER打造了首款完全自动驾驶停车技术,旨在使常规车辆转变为无人驾驶车辆。STEER的首款技术应用是4级自动驾驶及网络安全停车...

近日,美国软性机器抓手制造商 Soft Robotics 宣布,获得 2000 万美元的融资,本轮投资者包括 Scale Venture Partners,Calibrate Ventures...

据外媒报道,加州车管局发布了《2017自动驾驶脱离报告(California Autonomous Vehicle Disengagement Reports)》,其中谈及了脱离的具体...

用人机语音交互,来解决智能家居适老的问题;通过家庭门禁与安防套件、空气净化套件、可燃气体与有害气体监控套件等相互联动,在不同生活情...