Android实时服务器连接状态
创始人
2024-10-10 13:00:45
0

要实时监测Android设备与服务器的连接状态,可以使用Socket和Handler来实现。

首先,创建一个名为"NetworkUtils"的工具类,其中包含以下方法:

  1. 检查网络连接状态的方法:
public static boolean isNetworkConnected(Context context) {
    ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
    NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
    return activeNetwork != null && activeNetwork.isConnectedOrConnecting();
}
  1. 创建一个名为"SocketClient"的类,用于与服务器建立连接和发送接收数据:
public class SocketClient {
    private Socket socket;
    private BufferedReader reader;
    private PrintWriter writer;
    private Handler handler;

    public SocketClient(Handler handler) {
        this.handler = handler;
    }

    public void connectToServer() {
        try {
            socket = new Socket("服务器IP地址", 8080);
            reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            writer = new PrintWriter(socket.getOutputStream(), true);

            // 连接成功,发送消息到UI线程
            handler.sendEmptyMessage(1);

            // 循环接收服务器发送的数据
            String message;
            while ((message = reader.readLine()) != null) {
                // 接收到数据,发送消息到UI线程
                Message msg = new Message();
                msg.what = 2;
                msg.obj = message;
                handler.sendMessage(msg);
            }

        } catch (IOException e) {
            e.printStackTrace();
            // 连接异常,发送消息到UI线程
            handler.sendEmptyMessage(3);
        }
    }

    public void sendData(String data) {
        writer.println(data);
    }

    public void disconnectFromServer() {
        try {
            if (socket != null) {
                socket.close();
            }
            if (reader != null) {
                reader.close();
            }
            if (writer != null) {
                writer.close();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
  1. 在Activity中,使用以上工具类来监测服务器连接状态和进行相应操作:
public class MainActivity extends AppCompatActivity {
    private TextView connectionStatus;
    private SocketClient socketClient;

    private Handler handler = new Handler(new Handler.Callback() {
        @Override
        public boolean handleMessage(@NonNull Message msg) {
            switch (msg.what) {
                case 1:
                    connectionStatus.setText("已连接");
                    break;
                case 2:
                    String message = (String) msg.obj;
                    // 处理接收到的数据
                    break;
                case 3:
                    connectionStatus.setText("连接异常");
                    break;
            }
            return true;
        }
    });

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        connectionStatus = findViewById(R.id.connection_status);

        socketClient = new SocketClient(handler);
        new Thread(new Runnable() {
            @Override
            public void run() {
                // 检查网络连接状态
                if (NetworkUtils.isNetworkConnected(MainActivity.this)) {
                    // 连接到服务器
                    socketClient.connectToServer();
                } else {
                    // 网络未连接,发送消息到UI线程
                    handler.sendEmptyMessage(3);
                }
            }
        }).start();
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // 断开与服务器的连接
        socketClient.disconnectFromServer();
    }
}

以上就是一个简单的实时监测Android设备与服务器连接状态的实现方法。在SocketClient类中,可以根据需要添加更多的方法来发送和接收数据。在Activity中,可以根据实际情况进行数据处理和界面更新。

相关内容

热门资讯

七分钟辅助!丽水茶苑苹果手机辅... 七分钟辅助!丽水茶苑苹果手机辅助,本来是真的有辅助教程(有挂方式)1、实时丽水茶苑苹果手机辅助透视辅...
第一分钟辅助!闲来辅助神器下载... 第一分钟辅助!闲来辅助神器下载2022,好像真的有辅助方法(有挂教程)1、不需要AI权限,帮助你快速...
九分钟辅助!丽水都莱辅助工具试... 九分钟辅助!丽水都莱辅助工具试用,确实存在有辅助神器(有挂方法)九分钟辅助!丽水都莱辅助工具试用,确...
第一分钟辅助!蛮王辅助器,好像... 第一分钟辅助!蛮王辅助器,好像是有辅助方法(有挂教学)1、首先打开蛮王辅助器辅助器下载最新版本,在蛮...
第六分钟辅助!潮汕汇挂,一贯真... 第六分钟辅助!潮汕汇挂,一贯真的是有辅助插件(有挂辅助)1、这是跨平台的潮汕汇挂轻量版有透视,在线的...
六分钟辅助!微信开心泉州辅助器... 六分钟辅助!微信开心泉州辅助器,一直有辅助器(有挂教学)1、下载好微信开心泉州辅助器透视辅助下载之后...
第3分钟辅助!佛手十三道破解版... 第3分钟辅助!佛手十三道破解版安卓,竟然真的有辅助攻略(有挂存在)1、让任何用户在无需佛手十三道破解...
2分钟辅助!sohoo竞技联盟... 2分钟辅助!sohoo竞技联盟辅助,切实真的有辅助脚本(有挂技术)1.sohoo竞技联盟辅助 选牌创...
第8分钟辅助!心悦手游辅助器,... 第8分钟辅助!心悦手游辅助器,原来真的是有辅助技巧(确实有挂);1、每一步都需要思考,不同水平的挑战...
第十分钟辅助!广东雀神祈福真的... 第十分钟辅助!广东雀神祈福真的有用吗,都是是有辅助技巧(有挂方略)1、下载好广东雀神祈福真的有用吗透...