创建socket,java时出现SocketTimeOutException

时间:2010-04-01 08:08:54

标签: java sockets

我创建了一个示例java套接字应用程序  我使用Socket s = new Socket(ip, port)现在它工作正常。但是当我的互联网连接在很长一段时间后很长时间(即使有时候在2分钟之后),我曾经在那条线上得到SocketTimeOutException。意味着它在创建套接字时会出错。我希望异常应该正确处理意味着如果互联网连接非常慢,那么如果发生错误,它现在发生得很晚 我想如果发生这种类型的错误,那么它应该被非常快地捕获意味着错误不应该在这样的延迟时间间隔内发生,而应该立即发生。

如何实现这一目标。

1 个答案:

答案 0 :(得分:2)

减少套接字超时,如:

sock.connect(new InetSocketAddress("www.google.com", 80), 500);

其中500是超时(以毫秒为单位)。

这是一个使用Socket类的片段:

 try { 
      InetAddress addr = InetAddress.getByName("www.google.com");
      int port = 80; SocketAddress sockaddr = new InetSocketAddress(addr, port);
      Socket sock = new Socket(); 
      int timeoutMs = 500; 
      sock.connect(sockaddr, timeoutMs); 
    } 
catch (SocketTimeoutException  e) { System.out.println("Timeout reached!");}