SocketTimeoutException:接受超时

时间:2010-12-28 05:21:23

标签: java

以下代码抛出java.net.SocketTimeoutException: Accept timed out

ServerSocket serverSocket = new ServerSocket(0, 1, InetAddress.getLocalHost());
serverSocket.setSoTimeout(6000);  
serverSocket.accept();

我尝试在创建ServerSocket时更改所有内容,但错误仍然相同。如果有的话,请指导我在这里缺少的东西。

1 个答案:

答案 0 :(得分:3)

您的代码正在执行的操作是侦听本地主机 1 的端口0上的传入TCP / IP请求6秒。

以下是您获得SocketTimeoutException的原因。

  • 在6秒的时间范围内,没有任何东西试图连接到您的服务。
  • 有些东西试图连接,但是它试图连接错误的端口。 (端口零听起来像是你试图接受“任何”端口上的请求,我认为这不太可行。)
  • 有一个软件或硬件防火墙(或数据包过滤器)阻止连接请求到达您的应用程序,或阻止回复。

1 - 如果您不希望“只有在6秒内到达时才接受例外”行为......这让我觉得有些奇怪......你不应该在服务器套接字对象。