我想先读取指定消息大小的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