博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 即时通讯开发
阅读量:5981 次
发布时间:2019-06-20

本文共 1009 字,大约阅读时间需要 3 分钟。

Android 即时连天工具的开发

 

客户端,开三个线程,thread1监听接收消息,用udp,thread2定时向服务器发送在线消息,用tcp,thread3每隔一段时间检查发送的消息的时间是否超时(客户端之间每次收到消息都要发送一个确认包,每次发送消息,都要把此消息加入全局json,加上time,消息id等标签。直到收到确认消息后删除全局变量中的此消息),超时后就把此消息发送服务器,当好友再次上线后,就发送出去。

 

客户端登陆时用tcp连接服务器,服务器返回在线人员的列表,及发给此用户的离线消息。

 

 

 

需要注意:

 

 

一,android,主线程,即ui线程终不能执行耗时操作,连接网络的操作要在子线程中执行,子线程不能操作ui,要通过handler消息,发送与主线程操作ui。

二,客户端用的所有的udp---socket都是一个,即保存到全局变量中的socket,同一个端口不能同时绑定两次。

三,刷新消息,刷新在线下线,用的是广播机制,在 广播接收器中new个activity类,注意此activity类一定要在android的堆栈中,即曾经打开过此ui,并且没有销毁他。否则在广播接收器中会提示ui组件resure源找不到。

四,全局变量用application,要在AndroidManifes.xml中定义,调用时用getapplication(),每次退出程序要把全局变量清除依次,否则下次登录可能还会有;

 

五,记得在AndroidManifest.xml中加入一些权限,涉及到连接网络的权限,读写sd卡的权限,等等。

 

六,注意android的本地ip为10.0.2.2,java的本地ip为127.0.0.1

七,聊天界面是两个List列表相互交叉,显示消息,气泡是7.png格式的图片。

八,聊天消息存到文件中,保存为json格式

 

服务器端,开三个线程,thread1用于监听登陆,和定时向服务器发送的在线信息,监听ip,port的变化,并刷新在线用户列表的time。及时向在线好用发送用户上线下线的消息。Thread2,用于定时检查用户时间是否超时。Thread3,udp监听,客户端发送的离线消息,并添加进数据库。

 

 

服务端有一个全局变量,为用户的列表,用json存储,{id{ip,port,time}}

 

 

 

 

 

此外,添加删除朋友,注册,等不需要同步到其他朋友的操作,一律用httpclient请求服务端。

 

转载地址:http://vhlox.baihongyu.com/

你可能感兴趣的文章
利用反编译学习Android
查看>>
java.lang.NoSuchMethodError: org.springframework.core.io.ResourceEditor错误
查看>>
@Responsebody与@RequestBody
查看>>
特殊字符大全
查看>>
android 播放 gif 动画
查看>>
Silverlight学习:Silverlight页面跳转
查看>>
EonerCMS——做一个仿桌面系统的CMS(十三)
查看>>
php Output Control 深入理解 ob_flush 和 flush 的区别
查看>>
什么叫哈希表(转载)
查看>>
C++重载函数定义和用法
查看>>
Android开发之旅:HelloWorld项目的目录结构
查看>>
CDC 实现数据同步,增量更新
查看>>
struts2文件上传 判断大小
查看>>
Android layout属性大全
查看>>
13 款 JavaScript 模板引擎
查看>>
超棒的jQuery矢量地图生成插件 - JQVAMP
查看>>
asp.net学习之ado.net(连接模式访问)
查看>>
Scala first trial
查看>>
利用MsChart控件绘制多曲线图表(转载)
查看>>
异或运算法则
查看>>