如果客户端readObject()碰到 服务器Socket流有延迟 会怎样

AeNet 2014-03-27 11:40:30
我看到书上一款 即时通讯软件源码 感觉有点问题,服务端返回一个 响应用的object流 给客户端, 而客户端 只是是写了 readObject() 此句并没有 循环, 那么 如果服务器有延迟 该怎么办? readObject 是一直等到 读到 对象之后 才会继续执行后面语句的吗?
...全文
181 6 打赏 收藏 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
harrisonkao 2014-03-28
  • 打赏
  • 举报
回复
socket 有过期时间,你可以手动的设置,当长时间没有回应就会抛出socket 过期异常,在此期间readObject()处于等待状态,如果有回应信息则执行,如果没有,进入异常。你可以抓取和处理该异常。
酷酷啦啦xsx 2014-03-28
  • 打赏
  • 举报
回复
readobject是阻塞式的,和readutf,getsocket一样的,如果当前时刻没有,就卡在那,所以读都是在单独线程里面的,所以无论你数据什么时候来。都能读到
S117 2014-03-28
  • 打赏
  • 举报
回复
楼主去试下setSoTimeout(int timeout)方法 将此选项设为非零的超时值时,在与此 Socket 关联的 InputStream 上调用 read() 将只阻塞此时间长度。如果超过超时值,将引发 java.net.SocketTimeoutException,虽然 Socket 仍旧有效
哎,真难 2014-03-28
  • 打赏
  • 举报
回复
我想问下sokect有过期时间???
AeNet 2014-03-28
  • 打赏
  • 举报
回复
引用 1 楼 jsjhxqh 的回复:
socket 有过期时间,你可以手动的设置,当长时间没有回应就会抛出socket 过期异常,在此期间readObject()处于等待状态,如果有回应信息则执行,如果没有,进入异常。你可以抓取和处理该异常。
敢问 尊者 具体怎么设置socket流 的 过期时间?

62,620

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧