Android Socket 聊天工具(一个服务端实现多个客户端间通信)
2016-03-01 19:53
826 查看
客户端设计思路:
一 用户登录界面
1 用一个EditText作为用户名输入口,用一个按键确定。
2 注册一个广播接收器,专门接收由后来的聊天界面发过来的消息广播(包括发信人,收信人,消息体)。
3 创建一个客户端连接服务端的方法(要在线程中启动该方法),连接成功并获取输入输出流以后,再在里面启动一个输入流管理线程(接受并处理由服务端发送过来的消息)。并通过intent启动下一个好友列表界面(同时把自身用户名发给下一界面)。
4 对于输入流管理线程,要先判断接收到的是好友名单还是聊天消息发送两种广播,(服务端发送两种信息时可以加个标签以便线程区分)。然后分发出两种广播,一种广播后面的好友列表界面接受的在线好友名单,另一种广播出聊天界面接收的聊天信息。
5 在菜单下做一个退出Activity按键,方便用户退出程序。
6 当一切准备好以后,用户在输入用户名并点击确定,就可以实现以上操作,同时进入了好友列表界面(前提是能正确连接上服务端)。
二 好友列表界面
1 注册一个广播接收器,专门接收由登录界面的输入流管理线程发送过来的好友名单广播
2 用listView逐个显示好友名单。
3 获取用户登录界面发过来的自身用户名。
4 给listView绑定一个监听器,当用户点击listView上的某一好友时,通过intent启动下一个聊天界面,并把所点击到的好友用户名以及自身用户名发给下一个界面。
三 聊天界面
1 获取好友列表界面发送过来的聊天好友用户名以及自身用户名,并在Title上显示。
2 用一个EditText作为聊天消息输入口,用一个按键确定输出。
3 当用户点击确定以后,发送一个消息广播(包含发信人,收信人,消息体),让用户登录界面的消息广播接收器接收。
4 注册一个广播接收器接受用户登录界面的输入流管理线程发送过来的消息。
服务端设计思路:
消息处理界面(只有一个界面)
1 创建一个监听连接请求方法 (监听客户端发送连接请求,需要在线程中启动)。
A 当用户发送连接请求时,生成socket对象。由该socket对象生成输出流和输入流,从输入流中提取出客户端发送过来的用户名,把用户名放到sickName数组上,把输出流放在ArrayOut数组中。
B 发送新客户端XXX连接成功广播。
C 预先用sickName数组和ArrayOut数组创建发送好友列表方法(给各已连接客户端发送好友名单),在这里调用方法。
D 新生成并启动输入流管理线程(接受并处理客户端发送过来的消息,由于有一个新用户生成,就新生一个输入流管理线程,所以客户端发送的消息不会混乱)。
2 创建发送好友列表方法。
3 注册两个广播接收器,一个接收新客户端XXX连接成功广播;另一个接收输入流管理线程发送过来的聊天消息,识别出目标对象,并向目标对象分别发送消息。
4 在onResume方法中启动监听线程。
5 在菜单下做一个退出Activity按键和刷新按钮(再次发送已连接用户名单给各客户端)。
一 用户登录界面
1 用一个EditText作为用户名输入口,用一个按键确定。
2 注册一个广播接收器,专门接收由后来的聊天界面发过来的消息广播(包括发信人,收信人,消息体)。
3 创建一个客户端连接服务端的方法(要在线程中启动该方法),连接成功并获取输入输出流以后,再在里面启动一个输入流管理线程(接受并处理由服务端发送过来的消息)。并通过intent启动下一个好友列表界面(同时把自身用户名发给下一界面)。
4 对于输入流管理线程,要先判断接收到的是好友名单还是聊天消息发送两种广播,(服务端发送两种信息时可以加个标签以便线程区分)。然后分发出两种广播,一种广播后面的好友列表界面接受的在线好友名单,另一种广播出聊天界面接收的聊天信息。
5 在菜单下做一个退出Activity按键,方便用户退出程序。
6 当一切准备好以后,用户在输入用户名并点击确定,就可以实现以上操作,同时进入了好友列表界面(前提是能正确连接上服务端)。
二 好友列表界面
1 注册一个广播接收器,专门接收由登录界面的输入流管理线程发送过来的好友名单广播
2 用listView逐个显示好友名单。
3 获取用户登录界面发过来的自身用户名。
4 给listView绑定一个监听器,当用户点击listView上的某一好友时,通过intent启动下一个聊天界面,并把所点击到的好友用户名以及自身用户名发给下一个界面。
三 聊天界面
1 获取好友列表界面发送过来的聊天好友用户名以及自身用户名,并在Title上显示。
2 用一个EditText作为聊天消息输入口,用一个按键确定输出。
3 当用户点击确定以后,发送一个消息广播(包含发信人,收信人,消息体),让用户登录界面的消息广播接收器接收。
4 注册一个广播接收器接受用户登录界面的输入流管理线程发送过来的消息。
服务端设计思路:
消息处理界面(只有一个界面)
1 创建一个监听连接请求方法 (监听客户端发送连接请求,需要在线程中启动)。
A 当用户发送连接请求时,生成socket对象。由该socket对象生成输出流和输入流,从输入流中提取出客户端发送过来的用户名,把用户名放到sickName数组上,把输出流放在ArrayOut数组中。
B 发送新客户端XXX连接成功广播。
C 预先用sickName数组和ArrayOut数组创建发送好友列表方法(给各已连接客户端发送好友名单),在这里调用方法。
D 新生成并启动输入流管理线程(接受并处理客户端发送过来的消息,由于有一个新用户生成,就新生一个输入流管理线程,所以客户端发送的消息不会混乱)。
2 创建发送好友列表方法。
3 注册两个广播接收器,一个接收新客户端XXX连接成功广播;另一个接收输入流管理线程发送过来的聊天消息,识别出目标对象,并向目标对象分别发送消息。
4 在onResume方法中启动监听线程。
5 在菜单下做一个退出Activity按键和刷新按钮(再次发送已连接用户名单给各客户端)。
相关文章推荐
- 【Android开发高级实践】轻松帮你发现Bug(FindBugs在AndroidStudio上的应用)
- Android四大组件
- android隐式意图激活浏览器
- Android 调试之打印堆栈
- android 线程池两种实现方式
- Android中PopupMenu的使用
- android studio使用中碰到Failure [INSTALL_FAILED_OLDER_SDK] 问题
- android studio统计代码行数插件-->statistic
- 打勾显示输入的密码(EditText与setTransformationMethod)
- Android之Surface(1)
- Android动画分类汇总
- TaintDroid下载与编译(三):Android源码下载和编译
- Android中的工厂模式
- android开发遇到问题
- android studio的优化
- Android 圆形按钮实现
- 安卓变脸(主题实现)
- android显示隐藏软键盘
- SAX解析XML文件
- android 反编译+二次打包