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