溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Java Socket通信的序列化和反序列化的實例介紹

發(fā)布時間:2021-07-28 09:08:46 來源:億速云 閱讀:130 作者:chen 欄目:編程語言

本篇內(nèi)容介紹了“Java Socket通信的序列化和反序列化的實例介紹”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

Java Socket通信要如何才能把序列化和反序列化做好呢?這個問題需要我們不斷的進行學(xué)習(xí)有關(guān)代碼,在以往的使用中有很多的經(jīng)驗值得我們學(xué)習(xí)。下面我們就詳細(xì)的學(xué)習(xí)下有關(guān)的代碼。

在Java Socket通信中,我們要在客戶端和服務(wù)端中傳輸數(shù)據(jù),傳輸?shù)臄?shù)據(jù)有各種類型,int,short,long以及String,甚至是自定義的各種Object,我們?nèi)绾文軌虮WC在服務(wù)端和客戶端之間的數(shù)據(jù)能夠使得兩端都能理解,這就是所謂的“應(yīng)用協(xié)議”;在通信的“管道”中,流的都是二進制數(shù)據(jù),所以,雙方如何約定好“解析規(guī)則”,則就必須要求通信雙方都預(yù)先制定好協(xié)議;

序列化和反序列化

在Java Socket通信中,有一個借口Serializable接口,這個接口不需要實現(xiàn)實現(xiàn)任何方法,只是一個標(biāo)識,Java 序列化技術(shù)可以使你將一個對象的狀態(tài)寫入一個Byte 流里,并且可以從其它地方把該Byte 流里的數(shù)據(jù)讀出來。重新構(gòu)造一個相同的對象。這種機制允許你將對象通過網(wǎng)絡(luò)進行傳播,并可以隨時把對象持久化到數(shù)據(jù)庫、文件等系統(tǒng)里。

代碼如下:

Person:  import java.io.Serializable;  import java.util.Date;  public class Person implements Serializable {  private String name;  private int tall;  private transient Date birthday;  private Address address;  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public int getTall() {  return tall;  }  public void setTall(int tall) {  this.tall = tall;  }  public Date getBirthday() {  return birthday;  }  public void setBirthday(Date birthday) {  this.birthday = birthday;  }  public Address getAddress() {  return address;  }  public void setAddress(Address address) {  this.address = address;  }  }  Address:  package stream.demo;  import java.io.Serializable;  public class Address implements Serializable{  private String city;  private String street;  public Address() {  }  public Address(String city, String street) {  this.city = city;  this.street = street;  }  public String getCity() {  return city;  }  public void setCity(String city) {  this.city = city;  }  public String getStreet() {  return street;  }  public void setStreet(String street) {  this.street = street;  }  }  Person:  import java.io.Serializable;  import java.util.Date;  public class Person implements Serializable {  private String name;  private int tall;  private transient Date birthday;  private Address address;  public String getName() {  return name;  }  public void setName(String name) {  this.name = name;  }  public int getTall() {  return tall;  }  public void setTall(int tall) {  this.tall = tall;  }  public Date getBirthday() {  return birthday;  }  public void setBirthday(Date birthday) {  this.birthday = birthday;  }  public Address getAddress() {  return address;  }  public void setAddress(Address address) {  this.address = address;  }  }  Address:  package stream.demo;  import java.io.Serializable;  public class Address implements Serializable{  private String city;  private String street;  public Address() {  }  public Address(String city, String street) {  this.city = city;  this.street = street;  }  public String getCity() {  return city;  }  public void setCity(String city) {  this.city = city;  }  public String getStreet() {  return street;  }  public void setStreet(String street) {  this.street = street;  }

“Java Socket通信的序列化和反序列化的實例介紹”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI