Android连接热点的Socket文件传输

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连接和热点开启,于是有了现在的这篇博文:创建热点发送文件,让另一台手机连接热点接收文件。

效果图:

Android连接热点的Socket文件传输

Android连接热点的Socket文件传输

两台设备是如何传输文件的

  • 发送端->创建WiFi热点

  • 接收端->连接热点

  • 发送端->发送文件列表

  • 接收端->收到后展示文件列表,选择要接收的文件发送给发送端

  • 发送端->发送所选文件

  • 接收端->开始接收…

发送端->创建WiFi热点

由于Android没有直接开启热点的API,所以我们这里采用反射:

Android连接热点的Socket文件传输

接收端->连接热点

连接热点前先开启WiFi广播监听事件,然后开启WiFi,扫描周围可用WiFi列表,拿到 SSID再进行连接,最后在WiFi广播监听事件中比较已连接WIFI的 SSID 是否正确。

WiFi广播监听事件:

Android连接热点的Socket文件传输

WiFi广播接收器:

Android连接热点的Socket文件传输

打开和关闭WiFi:

Android连接热点的Socket文件传输

扫描周围可用WiFi列表:

Android连接热点的Socket文件传输

拿到 WiFi 扫描结果并且连接热点,当接收端连接成功后,会发一个UDP广播告知局域网内设备连接热点成功:

Android连接热点的Socket文件传输

发送端->发送文件列表

当发送端收到初始化完毕指令时,将用UDP广播发送文件列表。

Android连接热点的Socket文件传输

Android连接热点的Socket文件传输

接收端->选择文件,并告知发送端开始发送

收到文件列表后,接收端会将文件列表展示在 RecyclerView 控件,通过选择需要接收的文件,点击“开始发送”按钮,将发送“开始发送”指令到发送端,开启端口进行文件接收。

Android连接热点的Socket文件传输

发送端->发送所选文件

收到接收端发来的文件列表和“开始发送”指令后,发送端将会把所选文件逐个发送给接收端:

Android连接热点的Socket文件传输

Android连接热点的Socket文件传输

因为懒,以上列出的只是部分核心代码,选择文件的功能也没去做,草草地在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

更多

每天学习累了,看些搞笑的段子放松一下吧。关注最具娱乐精神的公众号,每天都有好心情。

Android连接热点的Socket文件传输

如果你有好的技术文章想和大家分享,欢迎向我的公众号投稿,投稿具体细节请在公众号主页点击“投稿”菜单查看。

欢迎长按下图 -> 识别图中二维码或者扫一扫关注我的公众号:

Android连接热点的Socket文件传输