android socket 通信实战

本文总结了在Android项目中实现自定义消息协议的Socket通信框架,包括Socket的简介、客户端连接创建、消息接收与发送、进程保活、异常恢复、重试机制等关键步骤。还探讨了自定义广播权限和进程异常处理策略,提供了代码示例和后续优化的思考方向。
摘要由CSDN通过智能技术生成

android socket client 实现

前段时间公司项目有个大版本准备对IM(消息通信)模块升级。虽然需求紧急但server同事任坚持自定义消息协议来实现一套通信框架。这里对Android端实现做下总结,仅供交流。

socket 简介

socket就是我们常说的套接字。网络上具有唯一标识的IP地址和端口组合在一起才能构成唯一能识别的标识符套接字。根据不同的的底层协议,Socket的实现是多样化的。常见的Socket类型为流套接字(streamsocket)和数据报套接字(datagramsocket);数据报套接字使用UDP协议,提供数据打包发送服务。流套接字将TCP作为其端对端协议,提供了一个可信赖的字节流服务。

创建连接

这里给出一个简单通信模型,图片来源于网络。
通信模型

  • sample code 这里只贴出了client端代码
try {
            LogUtil.d(TAG, " connecting  ip=%s , port = %d", ip, port);
            while (true) {
                try {
                    mSocket = new Socket();
                    mSocket.setKeepAlive(true);
                    mSocket.setSoTimeout(2 * 3 * 60 * 1000);//inputStream read 超时时间
                    mSocket.setTcpNoDelay(true);
                    mSocket.connect(new InetSocketAddress(ip, port));
                    if (mSocket.isConnected()) {
                        dataIS = new DataInputStream(mSocket.getInputStream());
                        dataOS = new DataOutputStream(mSocket.getOutputStream());
                        connectState = true;
                    }
                    this.mCallback.onConnect(this);
                    break;//connect sucess
                } catch (IOException e) {
                    mRetryPolicy.retry(e);
                    //间隔5秒,重连。
                    Thread.sleep(5000);
                    LogUtil.e(TAG, " connect IOException =%s , and retry count = %d"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值