java.net.SocketException:网络无法连接 [英] java.net.SocketException: Network is unreachable: connect

查看:229
本文介绍了java.net.SocketException:网络无法连接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

FileWriter xmlWriter;
xmlWriter = new FileWriter(fileName);
System.out.println(要下载的URL是:+ url);

// here异常被抛出//////////////////////////// $ $ $ $ b BufferedReader inputTxtReader = new BufferedReader
(new BufferedReader(new InputStreamReader(addURL.openStream())));
//////////////////////////////////////////// //////////

String str;
String fileInStr =;

str = inputTxtReader.readLine();

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

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

有时这个异常被抛出(我指定的是代码):

  java.net.SocketException:网络无法访问:在java.net.PlainSocketImpl.socketConnect(Native Method)连接

at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
在java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
在java.net.PlainSocketImpl.connect(PlainSocketImpl .java:182)
在java.net.Socket.connect(Socket.java:518)
在java.net.Socket.connect(Socket.java:468)
在太阳。 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 )
在java.net.URL.openStream(URL.java:1009)
在MessagePanel.download(MessagePanel.java:640)
在WelcomThread.run(MainBody2.java:891)

请指导我



谢谢大家

解决方案

您正在面对连接故障。这是否在计算机上的3G,WiFi或普通连接中发生?



无论如何,您必须假设连接可能会不时丢失,当您写应用程序。例如,使用手机,这在管道,地下室等中经常发生。使用PC应用程序,这种情况不太频繁,但有时会发生。



重试可以是好的解决方案而这个解释网络的干净的错误消息在这个时候也是不可用的。


I am trying to download a xml text file from a web server using this method:

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");
}

Sometimes this exception is thrown (where I specified is code):

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)

Please guide me

Thank you all.

解决方案

You are facing a connection breakdown. Does this happen in 3G, WiFi or "plain" connection on a computer?

Anyway, you must assume that the connection may be lost from time to time, when writing your app. For example, with mobiles, this happens frequently in the tube, in basements, etc. With PC apps, this is less frequent but occurs sometimes.

A retry can be a good solution. And a clean error message that explains the network is not available at this moment too.

这篇关于java.net.SocketException:网络无法连接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆