【问题标题】:SocketTimeoutException thrown抛出 SocketTimeoutException
【发布时间】:2014-01-12 21:22:47
【问题描述】:

'java.net.SocketTimeoutException: 连接超时'
一段时间后循环后出现此错误。 为什么我会收到 SocketTimeoutException?我该如何解决这个错误?

@Override
public void run() {
    while (true) {
        try {
            URLConnection connection = getURLConnection("http://www.trekpv.com");
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String s;
            while ((s = reader.readLine()) != null) {
                System.out.println(s);
            }
            reader.close();
            Thread.sleep(5000);
        }   catch (Exception e) {
            e.printStackTrace();
        }
    }
}

private URLConnection getURLConnection(String s) throws IOException {
    URL url = new URL(s);
    URLConnection urlconnection = url.openConnection();
    urlconnection.setConnectTimeout(10000);
    urlconnection.setReadTimeout(10000);
    urlconnection.addRequestProperty("Connection", "keep-alive");
    urlconnection.addRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20120716 Firefox/15.0a2");
    urlconnection.addRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
    urlconnection.addRequestProperty("Accept-Language", "en-US,en;q=0.8");
    urlconnection.addRequestProperty("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.3");
    return urlconnection;
}

【问题讨论】:

    标签: java networking timeout


    【解决方案1】:

    当指定的 url 在一定时间内没有被获取时,会发生 SocketTimeoutException。这可能是由于互联网连接速度慢,或者代码中存在一些错误导致getURLConnection("http://www.trekpv.com")funtion 无法获取 url。

    【讨论】:

      【解决方案2】:

      “连接超时”表示根本没有响应。可能有防火墙挡住了。

      【讨论】:

        猜你喜欢
        • 2015-08-14
        • 2016-08-09
        • 2012-05-16
        • 1970-01-01
        • 2010-12-04
        • 2022-11-09
        • 2018-06-22
        • 2016-01-08
        • 1970-01-01
        相关资源
        最近更新 更多