android 简单推送socket长链接
16lz
2021-01-24
androidsocket推送实现
这个代码只供初学者理解推送机制的原理,不建议使用到项目中。因为推送是一个对代码性能以及链接稳定性要求很高的东西。谢谢。服务器端简单创建一个线程循环从ServerSocket中读取消息,并利用PrintWriter将消息推送到每一个设备。扩展可以实现基本的聊天功能。具体实现代码如下:
public Service(Socket socket) {this.socket = socket;try {in = new BufferedReader(new InputStreamReader(socket.getInputStream()));msg = "user" + this.socket.getInetAddress() + "come toal:" + mList.size();this.sendmsg();} catch (IOException e) {e.printStackTrace();}}@Overridepublic void run() {// TODO Auto-generated method stubtry {while (true) {if ((msg = in.readLine()) != null) {if (msg.equals("exit")) {System.out.println("ssssssss");mList.remove(socket);in.close();msg = "user:" + socket.getInetAddress() + "exit total:" + mList.size();socket.close();this.sendmsg();break;} else {msg = socket.getInetAddress() + ":" + msg;this.sendmsg();}}}} catch (Exception e) {e.printStackTrace();}}public void sendmsg() {System.out.println(msg);int num = mList.size();for (int index = 0; index < num; index++) {// /192.168.1.123// /192.168.1.123Socket mSocket = mList.get(index);PrintWriter pout = null;try {pout = new PrintWriter(new BufferedWriter(new OutputStreamWriter(mSocket.getOutputStream())), true);pout.println(msg);} catch (IOException e) {e.printStackTrace();}}}}
android端利用Socket监听端口来读取消息
public void run() {try {while (true) {if (socket.isConnected()) {if (!socket.isInputShutdown()) {if ((content = in.readLine()) != null) {content += "\n";mHandler.sendMessage(mHandler.obtainMessage());} else {}}}}} catch (Exception e) {e.printStackTrace();}最后 上源码
更多相关文章
- 安卓巴士真诚送上营养丰富的精美Android大餐
- 第一个Android实例——计算器 编辑
- 在 Android(安卓)中调用二进制可执行程序(native executable )
- [Android--Tool]Android如何将他人的代码放入新建的工程中
- 深入浅出Android消息系统之一
- Android自带音乐播放器代码分析(2)
- 从Eclipse迁移代码到Android(安卓)Studio可能出现的异常
- Android学习笔记-保存文件(Saving Files)
- 如何查看Android里面其他应用的数据