0
    Socket socket = null;
    PrintWriter out =null;
    InetAddress ip = InetAddress.getByName(host);
    socket = new Socket(ip,port);
    out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
    out.println(myString);
    if(socket!=null)
        socket.close();

我的安卓代码是这样的。如果有任何问题,我需要将字符串保存在文件中(没有互联网连接,没有可用的服务器,ecc ......我尝试使用 try-catch,但即使没有可用的互联网/服务器,也不例外被扔了。你能帮帮我吗?

4

2 回答 2

0

InetAddress.getByName(host)如果您尝试在没有可用网络的情况下解析主机名,很难相信代码不会抛出 IOException 或 UnknownHostException 。也许您可以发布更多代码(使用 try-catch-block)。

另外我建议您尝试使用 DataOutputStream 将您的字符串写入套接字:

DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
dataOutputStream.writeUTF(myString);

此外,我建议您通过收听 android 中的适当广播或询问连接管理器来检查您的互联网连接的可用性。

public static boolean isNetworkConnectionAvailable(Context context) {

    boolean isNetworkConnectionAvailable = false;

    ConnectivityManager connectivityManager = (ConnectivityManager)context.getSystemService("connectivity");
    NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();

    if(activeNetworkInfo != null) 
    {
        isNetworkConnectionAvailable = 
                activeNetworkInfo.getState() == NetworkInfo.State.CONNECTED;
    }
    return isNetworkConnectionAvailable;
}

或者在这里查看:broadcast-receiver-for-checking-internet-connection-in-android-app

于 2013-10-16T11:35:03.827 回答
-1

您可以使用此方法InetAddress.isReachable来检查您是否可以 ping 主机。没有直接的方法来检查互联网连接

用法(没有尝试/捕获)-

    if(ip.isReachable(3000)) // timeout is 3000 ms ie 3s
    {
           // internet available,do something
    } 
于 2013-10-16T11:25:25.153 回答