检测EOF是在readInt的开头还是中间的某个地方
||
我正在使用以下内容从
DataInputStream
(包裹在套接字中)读取数据包。
DataInputStream ins = ....;
boolean cleanBreak = true;
try {
synchronized (readLock) {
// read: message length
int ml = ins.readInt();
cleanBreak = false;
// read: message data
byte[] msg = IO.readBytes(ins, ml);
}
} catch (IOException e) {
final boolean eof = e instanceof EOFException && cleanBreak;
...
我想使用“ 2”布尔值来确定EOF是发生在数据包中间(突然)还是恰好出现在两个数据包之间。当前,当EOF在数据部分中时有效,但在标头(int)中无效,例如如果在读取标头时只剩下2个字节。
我怎样才能做到这一点?
没有找到相关结果
已邀请:
1 个回复
室邢
并对其进行特殊检查以适应第一个字节。