【发布时间】:2016-07-28 09:33:15
【问题描述】:
我正在制作一个应用程序,客户端向服务器发送一条消息,然后等待 5 秒(假设)服务器响应,如果没有返回消息,它会再次重试。如果服务器用消息响应,则客户端处理它。这会循环进行,并在一段时间后再次发生。
为此,我考虑在客户端套接字上使用 setSoTimeout(time),但在阅读了 javadoc 和互联网上的大量解释后,我对这种方法是否正确感到困惑。
我在网上看到的
(1) 如果我在套接字上使用 setSoTimeout,那么它会在需要建立连接的持续时间内给出超时,如果它没有建立,那么它会在给定时间内重试建立连接。
(2) 如果我在套接字上使用 setSoTimeout,它会在指定的时间间隔内等待传入消息,如果没有收到消息,则停止等待。
我的问题是 -
(1) 以上哪项是正确的?
(2) 如果第二个陈述为真,那么我可以将它用于我的实现吗?
(3) 如果第二个陈述为真,超时计时器究竟是什么时候开始的?是在我声明套接字并设置超时时间的时候,还是在我发送消息的时候?
如果任何一种解释都不适用于我的情况,那么我应该怎么做才能在客户端等待固定的时间间隔让服务器回复?如果回复确实来了,我应该处理它并继续并重做相同的过程。如果没有回复,我应该继续并重新完成整个过程。
【问题讨论】:
标签: java sockets client-server