昨天我們談了怎麼建立socket通訊的服務端和客戶端,今天我們就來談一談怎麼封裝報文。
什麼是報文這裡我就不在闡述了,不清楚的朋友可以自己去查資料。我們今天要談的報文主要友以下幾個部分組成:
3位同步校驗位+8位報文長度+報文頭+報文體+32位md5校驗位
基本格式如下:
0x110x120x1300000232<?xml version="1.0" encoding="gbk"?>0204
20141223
14122301000815217010001
張三
b251ab76b11114db176023a0aa27a524
說明:前面的0x110x120x13是3位16進製制的同部位,這裡為了大家理解,所以就以字元的形式謝出來了。00000232是報文長度。<?xml version="1.0" encoding="gbk"?>0204
20141223
14122301000815217010001
是報文頭。即每個報文都包含的資訊。張三是報文體。b251ab76b11114db176023a0aa27a524是加密資料。
1.建立報文的物件
public2.封裝傳送和接收報文的工具類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()
}
/**3.在封裝乙個呼叫報文傳送的類:* 報文傳送 */
public
class
sockeutil
//public socketpacket sentsocket(socketpacket socketpacket) throws
unsupportedencodingexception, ioexception
public
byte streamtobytes(inputstream inputstream,int
len)
catch
(ioexception e)
return
bytes;}}
public string socket(socketpackage socketpackage) throwsunsupportedencodingexception
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的...