我已经给出Socket soc = new Socket(host,port);
现在当主机启动并处于运行状态时,套接字立即被创建。
但是当机器关闭或重新启动时,此行大约需要40秒才能响应。我尝试使用soc.setSoTimeout(timeout);
但是在创建Socket之后使用了这一行。因此它没有多大帮助。
此外,这似乎是JAVA本身的一个错误。 http://bugs.sun.com/bugdatabase/view_bug.do;:YfiG?bug_id=5092063
我在此链接中尝试了一些解决方法,例如在etc / hosts文件中添加计算机端口和主机名。但它不起作用。由于在创建套接字时由于DNS解析而导致延迟,因此系统的响应时间受到严重影响。
非常感谢任何帮助。
感谢, SR
答案 0 :(得分:10)
// create an unconnected socket
Socket soc = new Socket();
soc.setSoTimeout(SO_TIMEOUT); // if you like
// connect (with timeout)
soc.connect(new InetSocketAddress(host, port), CONNECT_TIMEOUT);