我想先讀取指定消息大小的4個字節(int),然後根據字節數讀取其餘字節。我使用下面的代碼來實現:Java TCP Socket接收指定長度的字節
DataInputStream dis = new DataInputStream(
mClientSocket.getInputStream());
// read the message length
int len = dis.readInt();
Log.i(TAG, "Reading bytes of length:" + len);
// read the message data
byte[] data = new byte[len];
if (len > 0) {
dis.readFully(data);
} else {
return "";
}
return new String(data);
是否有這樣做的更好的/有效的方式?
假設您正在使用阻塞I/O,我認爲它非常高效,尤其是如果您必須與非Java代碼交互時。這裏唯一的氣味就是調用一個String類型的構造函數而不指定正確的編碼。 – 2012-07-23 19:25:04