基于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

原创粉丝点击