整數。在我的應用程序,客戶端發送文件,這種格式的服務器,如何驗證從套接字流收到的Java
4 bytes of file length + actual file content
因此,服務器將讀取前4個字節來獲得消息的長度和那麼它讀取消息的長度。
服務器的代碼會是這樣,
ByteArrayOutputStream lengthBuf = new ByteArrayOutputStream(4);
byte[] output = new byte[4];
//Reading first 4 bytes from InputStream
int readLength = inputStream.read(output);
lengthBuf.write(outpu, 0, readLength);
//Converting to integer
int length = ByteBuffer.wrap(lengthBuf.toByteArray()).getInt();
它工作正常的情況下有效。但是如果客戶端無法在前4個字節中追加長度,那麼這個長度會得到一些垃圾值(1481988969)。如何驗證前4個字節的數據是一個有效的整數?
你試過了output.getInt();重建前四個? – danielad 2014-09-29 13:29:38
如果inputStream.read()讀取少於4個字節會怎麼樣?如果排序錯誤會發生什麼? – 2014-09-29 13:30:39
順便說一句'Integer'!='int' – 2014-09-29 13:32:41