温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java 中怎么利用Socket实现网络传输

发布时间:2021-07-20 14:02:53 阅读:138 作者:Leah 栏目:编程语言
Java开发者专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

今天就跟大家聊聊有关Java 中怎么利用Socket实现网络传输,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

采用Java Socket网络传输的序列化机制,将对象“压扁”成二进制字节,将二进制字节在网络中传输;

自定义协议,将对象用字符串描述出来,将字符串用二进制表示,在网络中传输,在另外一边用相反的策略解析这个字符串,重新构造业务对象,这个方法能够在异构平台中进行传输而不变形,但是需要额外的编写“压扁”和“充气”的代码;

我们这里用***种方法:

package stream.demo;  import java.io.ByteArrayInputStream;  import java.io.ByteArrayOutputStream;  import java.io.File;  import java.io.FileInputStream;  import java.io.FileOutputStream;  import java.io.IOException;  import java.io.InputStream;  import java.io.ObjectInputStream;  import java.io.ObjectOutputStream;  import java.io.OutputStream;  import java.util.Date;  public class Persistence {  public static void main(String[] args) {  byte[] bs = Persistence.toBytes();  //在网络中进行传输  Persistence.getBytes(bs);  }  public static byte[] toBytes() {  Person p = new Person();  p.setName("corey");  p.setTall(171);  p.setBirthday(new Date());  p.setAddress(new Address("yiyang", "ziyang"));  ByteArrayOutputStream out = new ByteArrayOutputStream();  try {  ObjectOutputStream oout = new ObjectOutputStream(out);  oout.writeObject(p);  } catch (IOException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  return out.toByteArray();  }  public static void getBytes(byte[] bs) {  try {  ByteArrayInputStream byteIn = new ByteArrayInputStream(bs);  ObjectInputStream in = new ObjectInputStream(byteIn);  Person p = (Person) in.readObject();  System.out.println(p.getName());  System.out.println(p.getTall());  System.out.println(p.getBirthday());  System.out.println(p.getAddress().getCity());  System.out.print(p.getAddress().getStreet());  } catch (Exception e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  }  } 

其中服务端代码片段为:

in = this.getRequestSocket().getInputStream();  out = this.getRequestSocket().getOutputStream();  byte[] bs = Persistence.toBytes();  System.out.println("发送数字长度:"+bs.length);  out.write(bs);  this.getRequestSocket().close();  客户端代码片段为:  InputStream in = request.getInputStream();  byte[] bin = new byte[200];  int length = 0;  while ((length = in.read(bin)) != -1) {  System.out.println("length:" + length);  Persistence.getBytes(bin);  }

看完上述内容,你们对Java 中怎么利用Socket实现网络传输有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI

开发者交流群×