Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Socket.setSoTimeout()不';t连接超时_Java_Sockets_Timeout - Fatal编程技术网

Java Socket.setSoTimeout()不';t连接超时

Java Socket.setSoTimeout()不';t连接超时,java,sockets,timeout,Java,Sockets,Timeout,我有一个问题,我使用setSoTimeout(500)设置连接超时0.5秒和读取时间延迟,但它实际上不工作,而是在大约10秒后超时,就像通常在这种异常情况下一样。是的,IP在这种情况下是有效的 java.net.ConnectException: Connection timed out: connect 代码如下: try { Socket sock = new Socket(ip, 42042); sock.setSoTimeout(500); BufferedIn

我有一个问题,我使用
setSoTimeout(500)
设置连接超时0.5秒和读取时间延迟,但它实际上不工作,而是在大约10秒后超时,就像通常在这种异常情况下一样。是的,IP在这种情况下是有效的

java.net.ConnectException: Connection timed out: connect
代码如下:

try {
    Socket sock = new Socket(ip, 42042);
    sock.setSoTimeout(500);
    BufferedInputStream is = new BufferedInputStream(sock.getInputStream());
    theNames = theNames + is.read() + ";";
    PrintWriter os = new PrintWriter(sock.getOutputStream());
} catch (IOException e) {
    System.out.println(e + " | Le serveur a " + ip + " ne reponds pas.");
}

Socket.setSoTimeout
设置读取超时。这与连接超时无关。如果要降低默认连接超时:

Socket sock = new Socket();
sock.connect(new InetSocketAddress(ip, 42042), timeout);
其中,
timeout
以毫秒为单位

注意:上面说“零超时被解释为无限超时”,但这是不正确的:它被解释为平台默认连接超时,大约为一分钟。无限超时仅适用于读取。还请注意,您可以使用
connect()
减少平台默认值,但不能增加平台默认值


半秒对于连接超时或读取超时来说都太短了。

Socket.setSoTimeout
设置读取超时。这与连接超时无关。如果要降低默认连接超时:

Socket sock = new Socket();
sock.connect(new InetSocketAddress(ip, 42042), timeout);
其中,
timeout
以毫秒为单位

注意:上面说“零超时被解释为无限超时”,但这是不正确的:它被解释为平台默认连接超时,大约为一分钟。无限超时仅适用于读取。还请注意,您可以使用
connect()
减少平台默认值,但不能增加平台默认值


半秒钟对于连接超时或读取超时来说都太短了。

这里没有“输入读取”,只有一个连接。
is.read()
是一个输入读取,如果我没记错的话。这里没有“输入读取”,只有一个连接。
is.read()
是一种输入读取,如果我没记错的话。这适用于在本地网络中搜索服务器的应用程序。500毫秒就足够了。我确实在搜索连接超时,而不是专门搜索读取超时。我会尝试一下,一旦有了反馈,我会给出反馈。谢谢你,马克西姆。事实上,如果您遇到连接超时,这是不够的。这适用于在本地网络中搜索服务器的应用程序。500毫秒就足够了。我确实在搜索连接超时,而不是专门搜索读取超时。我会尝试一下,一旦有了反馈,我会给出反馈。谢谢你,马克西姆。事实上,如果您遇到连接超时,这是不够的。