java - 检测连接是否失败 - Java Android

标签 java android sockets

如何检查服务器是否在线或离线,如果离线则开始连接直到服务器打开。我已经尝试过这个:

        connectBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {

            new Thread(rConnection).start();

        }
    });

   public Runnable rConnection = new Runnable() {

    @Override
    public void run() { 
        boolean status = connect();         
        while (!status)
        {
            System.out.println("Connection Status: " + status);
            status = Connect();
        }
    }
 };

public boolean Connect() {

        boolean status = false;

        try {
            s = new Socket(SERVER_ADDRESS, TCP_SERVER_PORT);

            System.out.println("Socket: " + s.toString());

            if (s.toString() != "")
            {
                status = true;
            }
        } catch (UnknownHostException e) {
            e.printStackTrace();
            status = false;
            s=null;
        } catch (IOException e) {
            e.printStackTrace();
            status = false;
            s=null;
        } catch (NullPointerException e)
        {
            e.printStackTrace();
            status = false;
            s=null;
        }

        return status;
    }

如果服务器在启动应用程序之前正在运行,它会成功连接,但如果服务器关闭或在一段时间后断开连接,我不会收到任何错误消息,并且不会再次开始重新连接。怎么解决这个问题?

最佳答案

基本上你可以分割这个:

s = new Socket(SERVER_ADDRESS, TCP_SERVER_PORT);

进入

s = new Socket();
s.connect(remoteAddr,timeout)

然后控制连接是否在超时或成功连接时返回。

关于java - 检测连接是否失败 - Java Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17187531/

相关文章:

java - Spring Tool Suite中maven使用的settings.xml在哪里?

java - 使用 Lucene 索引单个 Xml 文件

java.sql.SQLException : Access denied for user 'root' @'192.168.3.33' (using password: YES) on jelastic

布局顶部的 Android 键盘

android - AlertDialog OnCLickListener 需要按下后退按钮才能激活

java - 声明字段外部/内部方法 : Sonar Singular Field Rule

Android SDK 说我没有 JDK,不是吗?

python - select() 在 python 套接字中可以管理多少个文件描述符?

python - 是否有更新的 Python 模块可用于与 Minecraft 服务器通信?

php - 为什么socket read不离开循环?