Java Socket通信的序列化和反序列化代碼介紹
Java Socket通信要如何才能把序列化和反序列化做好呢?這個(gè)問(wèn)題需要我們不斷的進(jìn)行學(xué)習(xí)有關(guān)代碼,在以往的使用中有很多的經(jīng)驗(yàn)值得我們學(xué)習(xí)。下面我們就詳細(xì)的學(xué)習(xí)下有關(guān)的代碼。#t#
在Java Socket通信中,我們要在客戶端和服務(wù)端中傳輸數(shù)據(jù),傳輸?shù)臄?shù)據(jù)有各種類型,int,short,long以及String,甚至是自定義的各種Object,我們?nèi)绾文軌虮WC在服務(wù)端和客戶端之間的數(shù)據(jù)能夠使得兩端都能理解,這就是所謂的“應(yīng)用協(xié)議”;在通信的“管道”中,流的都是二進(jìn)制數(shù)據(jù),所以,雙方如何約定好“解析規(guī)則”,則就必須要求通信雙方都預(yù)先制定好協(xié)議;
序列化和反序列化
在Java Socket通信中,有一個(gè)借口Serializable接口,這個(gè)接口不需要實(shí)現(xiàn)實(shí)現(xiàn)任何方法,只是一個(gè)標(biāo)識(shí),Java 序列化技術(shù)可以使你將一個(gè)對(duì)象的狀態(tài)寫(xiě)入一個(gè)Byte 流里,并且可以從其它地方把該Byte 流里的數(shù)據(jù)讀出來(lái)。重新構(gòu)造一個(gè)相同的對(duì)象。這種機(jī)制允許你將對(duì)象通過(guò)網(wǎng)絡(luò)進(jìn)行傳播,并可以隨時(shí)把對(duì)象持久化到數(shù)據(jù)庫(kù)、文件等系統(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;
- }
以上就是對(duì)Java Socket通信的詳細(xì)介紹,希望大家找到自己?jiǎn)栴}的答案。