基于Android的WiFi聊天系统
来源:互联网 发布:芒果tv电视直播软件 编辑:程序博客网 时间:2024/06/07 18:12
最近复习没什么时间真是忙,代码上传Github好久了,一直没时间写博客,就今天抽出时间整理一下吧
1.简要介绍
该项目本身并非原创,忘记在哪找到的了,但是代码比较老,在现在的较新的Android版本根本无法运行,存在很多阻塞主线程的问题,这应该是早期Android版本的原因,但代码本身确实写得很漂亮,毫不夸张的说,这是笔者最近看到的最好的代码,所以就花了一天的时间看,然后花了一些时间移植到比较新的Android版本,修改了其中很多Bug,顺便对功能做了一些完善。
2.项目展示
废话不多说了,直接上图吧
3.项目功能介绍
(1)其中一个用户开启热点,不需要数据连接,其他用户连接热点后即组成局域网,实现在局域网内的聊天消息的发送接收; (2)同时实现文件的传输,由双方选择接收或者拒绝;
4.项目原理分析
后面给了上传的Github源码地址,在这里就大体上介绍一下。原理前面也提过,就是开热点组局域网,同时使用了UDP和TCP协议的相关内容,所以本项目也是学习TCP和UDP的好例子。
当然了这不是重点,最漂亮的地方在于所有的消息或者文件传输使用了一个自定义协议,使得整个流程就很自然。学习计算机网络的时候听了很多协议,但这次真实见到了才明白协议是什么样子,可能是笔者水平有限的缘故吧。看源码的时候就会发现,代码虽然长,看的时候却不费力,这也说明一点,当代码写的别人一看就懂,很容易找到清晰的思路,才说明了水平,而不是写出隔几天自己都不认识的代码,扯远了。看个图吧
关于网络消息处理部分,单独写了一个抽象的BaseActivity类,所有用到该功能的Activity都必须继承自该类,看起来很清晰明了,确实不这样用的话就会出现大量重复代码,完全没有必要,如图。
最后说一点笔者的体会,有两点尤为重要:(1)写一个稍微大点的项目时,做好项目结构的划分,提前理清框架尤为重要,对于很多常用到的功能就应该使用写成子类,本项目里面关于网络部分就单独写了一个抽象BaseActivity类,让笔者受益颇深;(2)另外对于想在一个稍大的项目添加新的功能时,最好单独建一个项目,做一个demo测试,完善后再加入项目,否则代码量大了就会让查错误复杂起来。
5.源码
最后最重要的就是献上代码了,看代码就更清楚了,给出github地址,欢迎star,笔者能力有限,不足之处,欢迎留言讨论
源码在这里->https://github.com/xugongming38/ChatOnWifi
阅读全文
1 0
- 基于Android的WiFi聊天系统
- 基于Android WiFi直连的P2P聊天程序
- Android:基于局域网的聊天系统
- android 系统基于wifi 定位的实现
- 基于局域网的聊天系统
- 基于TCP的聊天系统
- 基于WebSocket的聊天系统
- Android:基于百度云推送的聊天系统
- 基于Android 精简版 WiFi 聊天 源码下载
- 基于WIFI direct的即时聊天app开发(一)
- 基于QT的网络聊天系统
- 基于C++的局域网聊天系统客户
- 基于websocket+java聊天系统的实现
- 基于QT的网络聊天系统
- 基于套接字的网络聊天系统
- 基于局域网的聊天系统-文档
- 基于webSocket的多人聊天系统
- 基于JavaSE的在线聊天系统
- Oracle优化——外联结的执行计划
- spring_JUnit4测试_通过注解加载xml配置_@RunWith_@ContextConfiguration
- derby数据库源码分析(二)--页面分析
- 善良比聪明重要
- 磁盘控制器驱动程序不对,导致蓝屏
- 基于Android的WiFi聊天系统
- Unity_2D游戏工程的创建_071
- js中将字符串中转义符 反斜杠\去掉的方法 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct
- Python爬虫----12306火车票余票查询器
- python调用C++,并在C++代码执行时,实时返回信息到pyqt的控件上显示
- Oracle优化——星型联结转换(star_transformation_enabled)
- 交替最小二乘法
- 如何在 Linux 系统启用 UEFI 的 Secure Boot
- Codeforces Round #431 (Div. 2) A