在以下情况下
ObjectOutputStream output = new ObjectOutputStream(socket.getOutputStream());
output.flush();
// Do stuff with it
为什么在初始创建后总是需要刷新缓冲区?
我看到这一切的时候,我真的不明白什么需要刷新。我有点期望新创建的变量为空,除非另外指定。
有点像买一个垃圾桶,然后在里面发现一小堆垃圾。
使用ObjectInputStream
和时ObjectOutputStream
,这是必需的,因为它们在调用首次写入之前通过流发送了一个头。的呼叫flush()
将把该标头发送到远端。
根据规范,标头包含以下内容:
magic version
如果在构建ObjectInputStream时没有到达标头,则此调用将挂起,直到收到标头字节为止。
这意味着,如果所讨论的协议是使用ObjectStream
s编写的,则应在创建之后刷新该协议ObjectOutputStream
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句