摘要:创建好之后,还会先向流中先写入个字节的数据,创建的时候会相应的将其读出来,所以,不能多次创建,因为这会导致多次写入数据,
在socket编程中,如果在一个while循环中使用:
ObjectInputStream reader = new ObjectInputStream(socket.getInputStream); reader.readObject();
可能会出现EOFException,
看了网上的很多答案和解释,觉得都不对,网上都说是因为已经到达文件末尾了,而reader还在读取数据,所以在报错
其实,这是不对的,在循环中调用它本没有错,在while循环中如果没有数据可读了,它会自动阻塞,有数据来的时候就会读,所以在这种情况下根本不会出现
到达文件末尾了,而reader还在读
的问题,那么出现这种情况的原因是什么呢?
其实是代码业务逻辑的问题,导致reader在读的时候,socket被关闭,reader被关闭,连接被关闭等等,所以完全是代码设计的问题,
另外在使用ObjectOutputStream和ObjectInputStream的时候要注意一个问题,这两者创建的顺序需要遵循一定的约定,ObjectInputStream的创建需要ObjectOutputStream创建后的一些数据,所以它一般在ObjectOutputStream之前。创建好ObjectOutputStream之后,还会先向流中先写入4个字节的数据,创建ObjectInputStream的时候会相应的将其读出来,所以,不能多次创建ObjectOutputStream,因为这会导致多次写入数据,
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/64742.html
摘要:前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。直接现场手敲触发的样式。数组去重如何实现如果用的话,里面如何写排序算法。对象何时被修改心态需要调整好,不紧张不匆忙。 前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。 问题相关 Css 布局方式有...
阅读 3533·2023-04-26 02:10
阅读 1211·2021-11-22 15:25
阅读 1627·2021-09-22 10:02
阅读 869·2021-09-06 15:02
阅读 3419·2019-08-30 15:55
阅读 569·2019-08-30 13:58
阅读 2718·2019-08-30 12:53
阅读 3009·2019-08-29 12:38