java - Android Tcp 客户端检查与服务器的连接

标签 java android sockets tcp client

嗨,我有一个 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) {

    }
}

最佳答案

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

关于java - Android Tcp 客户端检查与服务器的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35795234/

相关文章:

c# - WP7 : TCP connection from phone to PC via USB

java - Spring Boot 应用程序作为 Maven 依赖项

java - 泛型:返回类型错误

android - 将新字体安装到 Android 模拟器的最佳方法是什么?

java - Android 应用程序登录屏幕未加载

android - 具有配置的资源 attr/textSize 的重复值

c++ - recvfrom() 不返回接收到的字节数

java - JUnit spring 资源覆盖

java - 富脸 : Trigger event after table is rendered

c++ - 关于多线程UDP Client-Server架构的问题