安卓端实现socket,需要考虑的问题比较多,如网络的切换,心跳的发送,重新连接,数据补传等处理。
本文仅对socket进行初步封装进行分享。
(1)数据发送(String)
(2)重连机制
首先,socket的使用,ip加port。这个需要注意,ip参数的格式,这里就不再叙述。
关于第一点:(发送,接收需要在子线程处理,这里不再叙述)
首先如下图
网络异常,图片无法展示
|
这里,我定义了bufferedreader和bufferedwriter用于收发,具体的定义,要看实际项目的需求,有些项目是采用十六进制的格式传递的,定义也有所不同。
接着就是socket的初始化:
网络异常,图片无法展示
|
这里对初始化使用了try,catch的包围,主要是要自行处理一些异常导致的掉线,连接不上的情况,必须实现。
初始化完毕后,就是进行接收的监听的,这里使用的是一个while循环,进行数据的监听,如下图:
网络异常,图片无法展示
|
发送的方法,如下图,也需要在子线程处理:
网络异常,图片无法展示
|
目前,都在抛出异常后,执行重连的函数,关于重连,可以设置标识进行判断是否启用,不过要注意并发引起的问题。
that's all
码云地址: