在setSoTimeout中等待的合理时间是多少

时间:2012-11-22 09:27:52

标签: java sockets network-programming

我正在编写一个需要读取表单套接字的程序,如下所示:

socket = (SSLSocket) factory.createSocket(domain, port);
socket.setSoTimeout(5000); 
socket.startHandshake();

我没有套接字编程的经验。我需要知道5秒是否是在投掷错误之前等待的合理时间?我需要设定一个时间,我不会失去建立联系的机会。

第二个问题是:当计时器开始时,一旦读数开始它会停止吗?或者,我应该考虑程序完成阅读所需的时间吗?

1 个答案:

答案 0 :(得分:0)

你的第一个问题基本上没有意义。您可以根据平均服务器响应时间的期望加上在决定出现问题之前准备等待的额外时间来设置读取超时。只有你的信息可以量化你的应用程序,但肯定5s太短。一个经验法则是使用预期响应时间的两倍或三倍,具体取决于方差,但这取决于您自己决定。

要回答第二个问题,定时器会在您输入read()时启动,并在数据的第一个字节到达或超时到期时停止。