基于Socket实现Android(java)与C#的同步通信.docVIP

基于Socket实现Android(java)与C#的同步通信.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Socket实现Android(java)与C#的同步通信.doc

基于Socket实现Android(java)与C#的同步通信   摘 要:基于Socket的通信机制,阐述了Java和C#语言通过Socket编程来互相通信的步骤,并给出了一种C/S模式的Socket通信系统框架,该框架解决了通过USB连接的安卓应用和Windows桌面应用之间通信的问题,达到了不同平台下文件和不同语言的对象的互传。   关键词:Socket编程;Java;C#;Json;数据同步   1 引言   随着Android智能手机市场的扩大,基于Android系统的应用程序也越来越多。Android程序多以Java语言为基础进行开发,而在Windows平台上,c#已经成为开发桌面程序的主流平台。在一些应用场景中,需要Android设备与装有Windows系统的计算机通过USB连接,用C#编写客户端,java编写服务器,实现跨平台的通信。   而标准的Socket方法可以实现任何平台和任何进程之间的Socket通信,在PC和Android手机通过USB连接的情况下,可用Android系统的ADB工具进行端口的转发,从而使两端设备的Socket连通。   2 实现通信的关键技术   基于以下技术,实现满足需求的Socket通信系统框架:   2.1 Socket通信技术   Socket是一种套接字规范,利用客户/服务器模式,解决了进程之间建立通信连接的问题。安装了TCP协议软件和实现了套接字规范的设备之间即可通过Socket进行通信。套接字之间连接的过程需要经过这三个步骤:服务端开启监听,客户端发出请求,服务端通过监听收到请求后再确认连接。两端连接上后即可进行数据传输的操作。   Socket有两种操作方式,一种使用TCP协议,在本系统中要求数据传输的准确性,因此采取使用TCP协议的来传输数据的方法。   2.2 C#中的套接字编程   Microsoft.Net.Framework的名字空间System.Net和System.Net.Socket包含丰富用以网络编程的类,其中Socket类为实现套接字网络编程提供了大量方法。   通过Encoding.UTF8.GetBytes(String),C#可以将将字符串转换为UTF-8字节数组,通过Encoding.UTF8.GetString(bytes[],0,Length)将UTF-8字节数组转换为字符串。   在创建Socket对象后,可通过Send方法发送字节数组形式的数据,或使用Receive方法接收字节数组数据,再用以上方法转换为相应字符串进行处理。   2.3 Java中的套接字编程   Java在包java.net中提供了两个类,Socket和ServerSocket。服务端和客户端之间先建立Socket之间的连接,之后进行通信。在服务端新建ServerSocket对象,循环执行accept方法来监听设备指定的端口,当客户端有Socket来连接它时,它会接受该Socket的连接请求,同时在服务端建立一个对应的Socket对象并和它进行通信。这样两边各一个互相连接的Socket对象,通过两个socket传递数据实现了通信。   Java同样提供了字节数组和字符串之间的进行转换的方法,将字节数组转换为字符串的过程如下:   String string = new String(charArray, 0, length);   字符串转换为字节数组的过程如下:   byte[] byte = strContent.getBytes(UTF-8);   2.4 用Json将对象序列化   除了传输文件数据外,在面向对象编程中,发送的数据要用实体类封装,将封装的对象存入List()泛型集合中,可以通过序列化List对象来灵活的封装和传递大量数据。   因为跨语言的需要,用Java或C#一方自己的序列化方式是行不通的,而Json提供了一个通用的序列化格式。   C#可以用开源的项目JSON.NET,在项目中添加引用:using Newtonsoft.Json;和using Newtonsoft.Json.Converters即可使用以下方法:   序列化:   JsonConvert.SerializeObject(string);   反序列化:   JsonConvert.DeserializeObject(obj);   Java可以用开源项目google-gson,在项目中导入这个项目的第三方jar包,然后添加引用:import com.google.gson.Gson;就可使用以下方法:   序列化:   Gson gson=new Gson();   String s=gson.t

文档评论(0)

ganpeid + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档