Android连接热点的Socket文件传输

最近把测试丢过来的种种BUG解决后,终于有时间去研究研究Socket通信,再加上以前做的WiFi连接和热点开启,于是有了现在的这篇博文:创建热点发送文件,让另一台手机连接热点接收文件。

效果图:

0?wx_fmt=gif&wxfrom=5&wx_lazy=1

155703_KIpv_1771562.gif

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

  • 发送端->创建WiFi热点

  • 接收端->连接热点

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

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

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

  • 接收端->开始接收…

发送端->创建WiFi热点

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

155703_Vegn_1771562.gif

接收端->连接热点

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

WiFi广播监听事件:

155703_jk0Y_1771562.gif

WiFi广播接收器:

155703_rk3x_1771562.gif

打开和关闭WiFi:

155703_4IJs_1771562.gif

扫描周围可用WiFi列表:

155703_9JKR_1771562.gif

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

155703_ZiVo_1771562.gif

发送端->发送文件列表

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

155703_uNdU_1771562.gif

155703_mx06_1771562.gif

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

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

155703_wMGL_1771562.gif

发送端->发送所选文件

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

155703_LPIT_1771562.gif

640?wx_fmt=png&wxfrom=5&wx_lazy=1

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

转载于:https://my.oschina.net/JiangTun/blog/911065

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值