2013年5月14日

[JAVA] 傳送object發生 java.io.StreamCorruptedException



private byte[] objtobytearray(IPinfo gotobj, byte[] key) {
//gotobj是一個IPinfo object
  ByteArrayOutputStream buffers = new ByteArrayOutputStream();
  try {
   ObjectOutputStream out = new ObjectOutputStream(buffers);
   out.writeObject(gotobj);
   out.flush();
   out.close();
   //out close之前要加flush
  } catch (Exception e) {
   System.out.println("error");
  }
                byte[] guarddataarray = new byte[buffers.toByteArray().length];
  System.out.println("the data length length:"+guarddataarray.length);
  System.out.println("the key length length:"+key.length);
  if (guardflag)
   guarddataarray = guard.AES_Data_Encrypter(buffers.toByteArray(),
     key);
  else
   guarddataarray = buffers.toByteArray();
  return guarddataarray;
 }
如果沒有在 out.close之前加入 flush 則透過socket傳送buffers的資料時 接收方可能會發生 java.io.StreamCorruptedException 上網查詢原因時,因為若沒有加入flush,可能buffers內沒有結束符號,導致接收方,認為stream沒有結束 所以會產生exception


沒有留言:

張貼留言