当前位置: 首页 > 面试题库 >

java.net.SocketException:网络不可访问:connect

满才
2023-03-14
问题内容

我正在尝试使用此方法从Web服务器下载xml文本文件:

static void download (String url , String fileName) throws IOException{

            FileWriter xmlWriter;
            xmlWriter = new FileWriter(fileName);
            System.out.println("URL to download is : " + url);

            // here Exception is thrown/////////////////////////////////
            BufferedReader inputTxtReader = new BufferedReader
                        (new BufferedReader(new InputStreamReader(addURL.openStream())));
            ////////////////////////////////////////////////////////

            String str ;
            String fileInStr = "";

            str = inputTxtReader.readLine();

            while (!(str == null)  ){///&& !(str.equals("</tv>"))
                fileInStr += (str + "\r\n");
                str = inputTxtReader.readLine();
            }

            xmlWriter.write(fileInStr);
            xmlWriter.flush();
            xmlWriter.close();
            System.out.println("File Downloaded");
}

有时会抛出此异常(我在其中指定的是代码):

java.net.SocketException: Network is unreachable: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.Socket.connect(Socket.java:518)
    at java.net.Socket.connect(Socket.java:468)
    at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:389)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:516)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
    at sun.net.www.http.HttpClient.New(HttpClient.java:306)
    at sun.net.www.http.HttpClient.New(HttpClient.java:318)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:788)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:729)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:654)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:977)
    at java.net.URL.openStream(URL.java:1009)
    at MessagePanel.download(MessagePanel.java:640)
    at WelcomThread.run(MainBody2.java:891)

请指导我

谢谢你们。


问题答案:

您面临连接故障。这会在计算机上的3G,WiFi或“普通”连接中发生吗?

无论如何,在编写应用程序时,您必须假定连接可能会不时断开。例如,在手机中,这种情况经常发生在管子,地下室等地方。对于PC应用程序,这种情况发生的频率较低,但有时会发生。

重试可能是一个很好的解决方案。而且目前尚无法使用清晰的错误消息来解释网络。



 类似资料:
  • 使用 HTTP 进行网络访问 有时候我们需要从网络上获取资源数据,一种常见的解决方法就是使用 HTTP 进行网络访问。 使用 HTTP 进行网络访问有三个步骤: 创建一个 HTTP 请求 HttpRequest 通过 setResponseCallback() 设置一个请求完成时的回调函数 使用 HttpClient 发送 HttpRequest HttpRequest 有四种类型:POST PU

  • 我有一个 docker 容器,我想给它 --network=host AND -。我需要连接到主机网络才能将主机数据狗服务器 (UDP) 和 网络用于其数据库。 尝试添加这两个网络会导致。 知道正确的处理方法吗?

  • HTTP GET # urllib_request_urlopen.py from urllib import request response = request.urlopen('http://localhost:8080/') print('RESPONSE:', response) print('URL :', response.geturl()) headers = resp

  • 我已经为在某些条件下限制Crashlytics网络使用的能力不足而工作了一段时间。例如,漫游、计费网络等。。 根据SDK留档,我发现只有两个选项可以解决这个问题: > 发送崩溃报告之前的内置用户同意对话框 这个API非常有限,因为: > 不初始化Crashlytics不仅可以阻止网络访问,还可以防止Crashlytics将崩溃报告保存在本地以便最终发送事件的任何机会。更不用说在运行时没有选择退出的

  • 问题内容: 我有一个具有多个IP地址的专用服务器,某些IP关联了mac地址,而其他IP(在子网中)则没有mac地址。我已经使用以下方法创建了docker macvlan网络: 我的IP:88.99.102.115,Mac:00:50:56:00:60:42。使用以下方法创建了一个容器: 这有效,我可以从外部访问该IP地址托管的Nginx。 IP没有MAC地址且网关不在子网中的情况。 子网:88.9

  • 问题内容: 在Windows XP计算机上安装的PHP(XAMPP)中,试图读取本地网络服务器上存在的目录。我用来检查它是否是我可以读取的目录。 在Windows资源管理器中,键入并显示该目录。当我映射网络驱动器时,也可以访问它。 在PHP中,我具有该脚本: 因为我尝试过: 和 但是我没有成功吗?任何的想法?谢谢 问题答案: 我通过更改服务器注册表中的某些内容来解决该问题,如本次讨论的最后一个答案