当前位置:w88优德官网网文章中心网站开发Java → Java客户端与C#服务器通过Socket传递对象

Java客户端与C#服务器通过Socket传递对象

减小字体 增大字体 作者:w88优德官网网  来源:www.cuoxin.com  发布时间:2014-2-15 21:25:10
最近做项目,需要C#与java间的交互,也就是C#编写服务器,java编写客户端,让两者进行通信。通信无非就是互发数据,首选Socket技术,通过TCP协议建立长连接,一般是以字节数组的形式传递数据,也就是说,无论传递什么东东,都先拆成字节数组。既然是面向对象编程,发送的数据要用实体类封装,同时配合List<>泛型集合,可以达到非常好的灵活性、便捷性。废话少说,本文的核心问题就是:C#与java如通过传递对象通信?刚开始我也很迷茫,不知道这个能不能实现,但同时又很兴奋,因为自己在做一件很有意思的事。经过探索研究,发现没有问题!可行!下面分享一下!需要用到的核心技术:n Socket。n Json。下面详细讲解实现的关键步骤:通信关键:C#和java用Socket通信,发送数据和接收数据可以统一采用UTF-8编码,经过测试,使用UTF-8编码可以成功传递对象。对于Socket技术,发送数据之前,一般将字符串转换成字节数组,然后发送字节数组;接收数据时,收到的也是字节数组,很多时候需要转换成字符串后使用。下边是一些常用的转换。C#语言字符串转换成UTF-8字节数组:byte[] b = Encoding.UTF8.GetBytes("123");C#语言UTF-8字节数组转换成字符串:// receiveData是字节数组,receiveN是字节数组lengthstring removeMsg = Encoding.UTF8.GetString(receiveData, 0, receiveN);Java语言字符串转换成UTF-8字节数组:/* strContent 是要转换的字符串*/byte[] bs = strContent.getBytes("UTF-8");Java语言UTF-8字节数组转换成字符串:/* charArray 是UTF-8格式的字节数组,一般从IO流中获取的时候就指定为UTF-8,read_rst 是字节数组length*/String resultStr = new String(charArray, 0, read_rst);序列化关键:大家都知道,对象是保存在内存中的,具体点说是内存中的堆区。因此当我们尝试保存、传递对象时,必须先把对象序列化,变成字符表示,把无形变成有形。由于是跨语言的交互,我们即不能用Java特有的序列化方式,也不能用C#特有的序列化方式,必须找一个通用的序列化格式才能交互。显然,Json是不二的选择。由此可知,我们需要Json完成以下功能:经过测试,用如下方法可实现上述转换。C#端可以用开源项目JSON.NET,下载后根据自己的.NET版本,选择相应的Newtonsoft.Json.dll,引用后再添加:using Newtonsoft.Json;using Newtonsoft.Json.Converters;即可使用。C#用Json序列化对象方法://te是要序列化的对象;obj是对象序列化后的字符串string obj = JsonConvert.SerializeObject(te);C#用Json反序列化对象方法://TestEntity是目标类型;obj是经过Json序列化的对象,字符串形式TestEntity te = JsonConvert.DeserializeObject<TestEntity>(obj);Java端可以用开源项目google-gson,下载后是一个jar格式的包,直接在项目中导入这个包,并添加引用:import com.google.gson.Gson;即可使用。Java用Json序列化对象方法:Gson gson = new Gson();/*te是需要序列化的对象*/String s = gson.toJson(te);Java用Json反序列化对象方法:Gson gson = new Gson();/*s是经过Json序列化的对象,字符串类型;TestEntity是目标类型*//*注意:使用fromJson方法反序列化一个对象时,该对象的类型必须显示的声明一个不带参数的构造方法*/TestEntity te = gson.fromJson(s,TestEntity.class);关键的部分就这些,其他的地方都非常容易实现,网上有很多成熟的代码,就不赘述了。

本文引用网址:
在下列搜索引擎中搜索“Java客户端与C#服务器通过Socket传递对象”的相关信息:
谷歌搜索 百度搜索 360搜索 雅虎搜索 搜狗搜索 搜搜搜索 必应搜索 有道搜索
你可能还喜欢以下文章
  • 1如何做爱真人示范图片 男女ML常...
  • 2情侣酒店开房qvod 情侣做爱视频...
  • 3怎么做爱舒服?真人示范做爱姿...
  • 4如何做爱更舒服?教你做爱72式...
  • 5雨后小故事 qq表情姐弟雨后小故...
  • 1dede:arclist 实现分页!-织梦...
  • 2免费软文发布平台汇总
  • 3dedecms实现频道封面和列表页调...
  • 4织梦DEDECMS {dede:field name...
  • 5首页flash幻灯片不显示解决方法...
  • 1嫩白少妇与猛男户外疯狂车震遭...
  • 2怎样爱爱最爽?性爱姿势真人图...
  • 3中国女大学生的淫靡生活
  • 4舒淇艳照门事件 舒淇不雅照ed2...
  • 5合肥艳照门事件 合肥艳照门全套...
  • 1如何做服务器安全维护?有哪些...
  • 2Windows Server 2003系统性能优...
  • 3IIS中的 MIME类型
  • 4设置不求人:搞懂任务栏显示项目...
  • 5远程管理Win2003服务器技巧
  • 赞助商广告

    图片文章导读