Java Socket報文通訊報文的封裝(二)

2021-08-14 21:14:29 字數 2572 閱讀 2965

昨天我們談了怎麼建立socket通訊的服務端和客戶端,今天我們就來談一談怎麼封裝報文。

什麼是報文這裡我就不在闡述了,不清楚的朋友可以自己去查資料。我們今天要談的報文主要友以下幾個部分組成:

3位同步校驗位+8位報文長度+報文頭+報文體+32位md5校驗位

基本格式如下:

0x110x120x1300000232<?xml version="1.0" encoding="gbk"?>020420141223

14122301000815217010001張三

b251ab76b11114db176023a0aa27a524

說明:前面的0x110x120x13是3位16進製制的同部位,這裡為了大家理解,所以就以字元的形式謝出來了。00000232是報文長度。<?xml version="1.0" encoding="gbk"?>020420141223

14122301000815217010001是報文頭。即每個報文都包含的資訊。張三是報文體。b251ab76b11114db176023a0aa27a524是加密資料。

1.建立報文的物件

public

class

socketpacket

public

string getbody()

public

string getsyncstr()

public

string ge***5()

public

void

setbodylen(string bodylen)

public

void

setbody(string body)

public

void

setsyncstr(string syncstr)

public

void

se***5(string md5)

public

byte getbytestream() throws

unsupportedencodingexception

//新增body內容

for(int i = 0;i)

//新增md5校驗碼

byte md5bytes = this

.md5.getbytes();

for (int i = 0; i < num.length; i++)

return

soc;

}//位元組裝轉報文string

public string getstring(byte

socketbytes)

//將位元組陣列轉化為string

public string bytestostring(byte bytes,int start,int

end)

byte bs = new

byte[end-start];

for(int i = 0;i)

str = new

string(bs);

return

str;

}public

string tostring()

}

2.封裝傳送和接收報文的工具類

/**

* 報文傳送 */

public

class

sockeutil

//public socketpacket sentsocket(socketpacket socketpacket) throws

unsupportedencodingexception, ioexception

public

byte streamtobytes(inputstream inputstream,int

len)

catch

(ioexception e)

return

bytes;}}

3.在封裝乙個呼叫報文傳送的類:

public string socket(socketpackage socketpackage) throws

unsupportedencodingexception

catch

(unknownhostexception e)

catch

(ioexception e)

socketpackage s = null

;

try

catch

(exception e)

catch

(unsupportedencodingexception e1)

e.printstacktrace();

}

string result = "";

try

catch

(unsupportedencodingexception e)

return

result ;

}

java socket報文通訊 報文的封裝

什麼是報文這裡我就不在闡述了,不清楚的朋友可以自己去查資料。我們今天要談的報文主要友以下幾個部分組成 3位同步校驗位 8位報文長度 報文頭 報文體 32位 md5校驗位 基本格式如下 0x110x120x1300000232020420141223 14122301000815217010001張三...

java socket通訊學習筆記

正處於網路環境下的兩個程式,它們之間通過乙個互動的連線來實現資料通訊。每乙個連線的通訊端叫做乙個socket。乙個完整的socket通訊程式應該包含以下幾個步驟 1 建立socket 2 開啟連線到socket的輸入輸出流 3 按照一定的協議對socket進行讀寫操作 4 關閉socket。sock...

JAVA SOCKET與TUXEDO通訊的問題

現在我這邊的socket作為tuxedo傳送報文的接收服務端,在返回資料給tuxedo的時候,現在遇到乙個問題,就是同乙個socket連線不能夠將訊息分批返回給tuxedo,因為tuxedo要求第乙個報文為8位的後續報文長度,然後再傳送後續報文,必須分開發,否則不能夠正常接收。我記得在jdk1.4的...