Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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 如何使用URLConnection Timeout_Java_Proxy_Socks - Fatal编程技术网

Java 如何使用URLConnection Timeout

Java 如何使用URLConnection Timeout,java,proxy,socks,Java,Proxy,Socks,我正在尝试对SOCKS代理列表进行排序,找出哪些代理的连接和读取时间小于1000毫秒,下面是我的代码 for(Proxy p : proxies) { try { URLConnection testConnection = testUrl.openConnection(p); testConnection.setConnectTimeout(TIMEOUT_VALUE); testConnectio

我正在尝试对SOCKS代理列表进行排序,找出哪些代理的连接和读取时间小于1000毫秒,下面是我的代码

for(Proxy p : proxies) {
            try {
            URLConnection testConnection = testUrl.openConnection(p);
            testConnection.setConnectTimeout(TIMEOUT_VALUE);
            testConnection.setReadTimeout(TIMEOUT_VALUE);
            success.add(p);
            } catch(SocketTimeoutException ste) {
                System.out.println("Proxy " + p.address().toString() + " timed out.");
            }
        }

但是他们中的每一个都通过了测试,即使我做了
TIMEOUT\u VALUE=1我做错了什么?谢谢您的帮助。

我想您的问题是您没有从连接中读取任何内容。如果我将
TIMEOUT\u值设置得太低,则会出现异常。无论我读了所有的回答还是只读了一行,都不会影响结果的时间,我想这是因为我在一个数据包中得到了完整的答案

以下是我使用的测量值(无代理):

我用


你能加上这一行,看看它返回的值是多少吗
testConnection.getConnectTimeout()
我的意思是在设置超时值后添加它。@CoolBeans它只是打印出1000,就像它应该打印的那样。我在一些非标准实现中看到了这一点,这个方法可能会忽略指定的超时。不过,我不确定这些非标准的实现是什么。多亏了这一点,对于添加的度量,我会在将其添加到成功列表之前检查所用时间是否小于超时值。再次感谢!对我有用。您还可以使用代理类来限制副作用,而不是更改系统属性(特别是在服务器等多线程环境中)。
proxySet
在任何发布的JVM中都不起任何作用。
    int TIMEOUT_VALUE = 1000;
    try {
        URL testUrl = new URL("http://google.com");
        StringBuilder answer = new StringBuilder(100000);

        long start = System.nanoTime();

        URLConnection testConnection = testUrl.openConnection();
        testConnection.setConnectTimeout(TIMEOUT_VALUE);
        testConnection.setReadTimeout(TIMEOUT_VALUE);
        BufferedReader in = new BufferedReader(new InputStreamReader(testConnection.getInputStream()));
        String inputLine;

        while ((inputLine = in.readLine()) != null) {
            answer.append(inputLine);
            answer.append("\n");
        }
        in.close();

        long elapsed = System.nanoTime() - start;
        System.out.println("Elapsed (ms): " + elapsed / 1000000);
        System.out.println("Answer:");
        System.out.println(answer);
    } catch (SocketTimeoutException e) {
        System.out.println("More than " + TIMEOUT_VALUE + " elapsed.");
    }
    System.getProperties().put("proxySet", "true");
    System.getProperties().put("http.proxyHost", "192.168.10.121");
    System.getProperties().put("http.proxyPort", "8080");
    //System.getProperties().put("http.nonProxyHosts", "8080");