资讯专栏INFORMATION COLUMN

Socket编程问题小记

bergwhite / 3237人阅读

摘要:创建好之后,还会先向流中先写入个字节的数据,创建的时候会相应的将其读出来,所以,不能多次创建,因为这会导致多次写入数据,

在socket编程中,如果在一个while循环中使用:

ObjectInputStream reader = new ObjectInputStream(socket.getInputStream);
reader.readObject();

可能会出现EOFException,
看了网上的很多答案和解释,觉得都不对,网上都说是因为已经到达文件末尾了,而reader还在读取数据,所以在报错
其实,这是不对的,在循环中调用它本没有错,在while循环中如果没有数据可读了,它会自动阻塞,有数据来的时候就会读,所以在这种情况下根本不会出现

到达文件末尾了,而reader还在读

的问题,那么出现这种情况的原因是什么呢?
其实是代码业务逻辑的问题,导致reader在读的时候,socket被关闭,reader被关闭,连接被关闭等等,所以完全是代码设计的问题,

另外在使用ObjectOutputStreamObjectInputStream的时候要注意一个问题,这两者创建的顺序需要遵循一定的约定,ObjectInputStream的创建需要ObjectOutputStream创建后的一些数据,所以它一般在ObjectOutputStream之前。创建好ObjectOutputStream之后,还会先向流中先写入4个字节的数据,创建ObjectInputStream的时候会相应的将其读出来,所以,不能多次创建ObjectOutputStream,因为这会导致多次写入数据,

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64742.html

相关文章

  • 前端小白的面经小记

    摘要:前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。直接现场手敲触发的样式。数组去重如何实现如果用的话,里面如何写排序算法。对象何时被修改心态需要调整好,不紧张不匆忙。 前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。 问题相关 Css 布局方式有...

    FuisonDesign 评论0 收藏0
  • 前端小白的面经小记

    摘要:前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。直接现场手敲触发的样式。数组去重如何实现如果用的话,里面如何写排序算法。对象何时被修改心态需要调整好,不紧张不匆忙。 前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。 问题相关 Css 布局方式有...

    MSchumi 评论0 收藏0
  • 前端小白的面经小记

    摘要:前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。直接现场手敲触发的样式。数组去重如何实现如果用的话,里面如何写排序算法。对象何时被修改心态需要调整好,不紧张不匆忙。 前端小白最近面试几家公司,写点面经分享给大家,同时记录下自己的缺点以供后期补足,各个公司的开发方向不同,请各位理性看待。 问题相关 Css 布局方式有...

    TerryCai 评论0 收藏0
  • 是,入坑小记

    摘要:种一颗树最好的时机是十年前,其次是现在经过一段刻骨的升本历程,来到了西华大学。计划是前进的路线图免除对于以后学习的各自夸大的计划,从实际出发找到适合自己的前进的路线图。今年我岁,年轻。 种一颗树最好的时机是十年前,其次是现在 经过一段刻骨的升本历程,来到了西华大学。明显能感觉到自己又有了新的...

    CoXie 评论0 收藏0

发表评论

0条评论

bergwhite

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<