【问题标题】:Android Tcp Client check connection to the ServerAndroid Tcp Client 检查与服务器的连接
【发布时间】:2016-06-18 03:21:41
【问题描述】:

嗨,我有一个 Tcp 客户端,我想检查他是否连接到服务器,我不是要检查他是否连接到 socket.isConnected() 或 socket.isBound() 我的意思是我想知道如果套接字现在已连接并且我找不到方法,因为当服务器断开连接时,他不会向客户端发送任何内容

这是我的代码:

    public void sendMessage(String message) {
    if (out != null && !out.checkError()) {
        out.println(message);
        out.flush();
    }
}

public void stopClient() {
    mRun = false;
}

public void run() {

    mRun = true;
    try {
        //connecting
        InetAddress serverAddr = InetAddress.getByName(SERVERIP);
        Socket socket = new Socket(serverAddr, SERVERPORT);
        sss = socket;


        try {
            //send the message to the server
            out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())), true);
            //receive the message that the server sends back
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

            HelloService.firstTouch();


            //in this while the client listens for the messages sent by the server
            while (mRun) {
                serverMessage = in.readLine();

                if (serverMessage != null && mMessageListener != null) {
                    //call the method messageReceived from MyActivity class to inform main activity that a message has received
                    mMessageListener.messageReceived(serverMessage);
                }
                serverMessage = null;
            }

        } catch (Exception e) {

        } finally {

            socket.close();
        }

    } catch (Exception e) {

    }
}

【问题讨论】:

  • 如果@EJP 的回答对您不起作用(不过嗯),请尝试 ping 服务器或使用isReachable()
  • 试过了,但它一直返回 false 其他什么?很重要,请某人?
  • isReachable()返回false不是意味着服务器断开了吗?
  • 是的,但即使服务器没有断开连接,它也总是返回 false

标签: java android sockets tcp client


【解决方案1】:

当服务器断开连接时,readLine() 返回 null,你需要检查它,如果你得到它,就跳出读取循环并关闭连接。您目前的检查仅足以避免 NPE。

【讨论】:

  • 问题是它不会返回任何我已经尝试过的东西
猜你喜欢
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 2012-08-05
  • 1970-01-01
  • 2015-09-29
  • 2012-05-04
相关资源
最近更新 更多