国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設計 > 正文

使用ObjectStream會出現(xiàn)的問題

2019-11-18 13:11:38
字體:
供稿:網(wǎng)友

  1. ObjectInputStream與ObjectOutputStream的順序問題
  在網(wǎng)絡通訊中,主機與客戶端若使用ObjectInputStream與ObjectOutputStream建立對象通訊,必須注重聲明此兩個對象的順序。
  如:
  主機端先建立ObjectInputStream后建立ObjectOutputStream,則對應地客戶端要先建立ObjectOutputStream后建立ObjectInputStream,否則會造成兩方互相等待數(shù)據(jù)而導致死鎖。
  原因是建立ObjectInputStream對象是需要先接收一定的header數(shù)據(jù),接收到這些數(shù)據(jù)之前會處于阻塞狀態(tài)。以下為java API文檔的說明
  Creates an ObjectInputStream that reads from the specified InputStream.
  A serialization stream header is read from the stream and verified.
  This constrUCtor will block until the corresponding ObjectOutputStream
  has written and flushed the header.
  
  故而為了防止這種死鎖狀態(tài),通訊兩方的ObjectInputStraem,ObjectOutputStream必須注重順序?qū)褂谩?br />  
  2. ObjectInputStream接收到非ObjectOutputStream數(shù)據(jù)的問題
  在使用ObjectInputStream與ObjectOutputStream對象通訊的通訊雙方,假設客戶端程序出現(xiàn)錯誤,發(fā)送了非ObjectOutputStream封裝發(fā)送的數(shù)據(jù)(比如發(fā)送一個數(shù)字或字符串到主機),則主機端的ObjectInputStream接收到錯誤數(shù)據(jù)后不能自動糾正,會一直接收數(shù)據(jù)而處于阻塞狀態(tài),從而導致通訊失敗。尚未找到解決方法。目前想的辦法為寫自己的ObjectStream類。
  
  3. 解決版本問題
  使用ObjectStream的時候會額外發(fā)送一個關于對象的序列號
  static final long serialVersionUID = ....
  手動加入此域則可避免版本差異導致的問題。
  對象序列號的計算可用SDK的serialver計算。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 松滋市| 宁德市| 巴里| 大同市| 石首市| 峡江县| 根河市| 于都县| 沅陵县| 龙川县| 克拉玛依市| 长汀县| 霍城县| 勃利县| 绥芬河市| 疏附县| 清徐县| 平安县| 岑溪市| 丰顺县| 淅川县| 鞍山市| 沙雅县| 四子王旗| 大冶市| 长武县| 钦州市| 安塞县| 米林县| 金塔县| 大石桥市| 南通市| 光山县| 大宁县| 洛宁县| 阿巴嘎旗| 桦南县| 卓尼县| 卢湾区| 仙居县| 阿图什市|