Android连接热点的Socket文件传输
昨日京东公布截至2017年3月31日的2017财年第一季度业绩。数据显示,京东一季度净收入为762亿元(约111亿美元),同比增长41.2%,净利润为3.557亿元(约5170万美元),去年同期净亏损为8.673亿元。至此,京东实现了2014年上市以来的首次盈利。
作者简介本篇来自 假装是AA 的投稿,分享了如何创建热点以及如何连接热点接收文件, 文章实践代码居多,这里只是介绍了核心部分,感兴趣的朋友可以通过文末源码地址,查看详细实现。
假装是AA 的博客地址:
http://blog.csdn.net/myatlantis
正文
最近把测试丢过来的种种BUG解决后,终于有时间去研究研究Socket通信,再加上以前做的WiFi连接和热点开启,于是有了现在的这篇博文:创建热点发送文件,让另一台手机连接热点接收文件。
效果图:
两台设备是如何传输文件的
发送端->创建WiFi热点
接收端->连接热点
发送端->发送文件列表
接收端->收到后展示文件列表,选择要接收的文件发送给发送端
发送端->发送所选文件
接收端->开始接收…
发送端->创建WiFi热点
由于Android没有直接开启热点的API,所以我们这里采用反射:
接收端->连接热点
连接热点前先开启WiFi广播监听事件,然后开启WiFi,扫描周围可用WiFi列表,拿到 SSID再进行连接,最后在WiFi广播监听事件中比较已连接WIFI的 SSID 是否正确。
WiFi广播监听事件:
WiFi广播接收器:
打开和关闭WiFi:
扫描周围可用WiFi列表:
拿到 WiFi 扫描结果并且连接热点,当接收端连接成功后,会发一个UDP广播告知局域网内设备连接热点成功:
发送端->发送文件列表
当发送端收到初始化完毕指令时,将用UDP广播发送文件列表。
接收端->选择文件,并告知发送端开始发送
收到文件列表后,接收端会将文件列表展示在 RecyclerView 控件,通过选择需要接收的文件,点击“开始发送”按钮,将发送“开始发送”指令到发送端,开启端口进行文件接收。
发送端->发送所选文件
收到接收端发来的文件列表和“开始发送”指令后,发送端将会把所选文件逐个发送给接收端:
因为懒,以上列出的只是部分核心代码,选择文件的功能也没去做,草草地在Activity中写死了几个文件去上传,具体代码可去Github下载运行,参见SendFilesActivity类,哈哈!
源码地址:
https://github.com/WhoIsAA/SocketDemo
貌似第一次在博客中贴那么长的代码,关于Socket的知识还要学许多许多,而我懂的也只不过是入门的皮毛,以上Demo参考了以下大神博文及资料:
Android如何实现茄子快传
http://www.jianshu.com/p/1b0b337829f5
[Java TCP/IP Socket] — 单播、广播、组播
http://blog.csdn.net/dabing69221/article/details/17286441
更多java socket传多个文件的疑问
http://bbs.csdn.net/topics/340170165
每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。
如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。
欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号: