前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面对面快传简单DIY:Python通过http随机端口本地分享文件(手机QPython)

面对面快传简单DIY:Python通过http随机端口本地分享文件(手机QPython)

原创
作者头像
Kitov
修改2021-06-09 10:31:39
3.9K4
修改2021-06-09 10:31:39
举报

面对面快传

无非就是A连B热点然后通过局域网的WLAN的WiFi信号或者蓝牙信号传输文件,其中,不考虑扫一扫功能和定位判断功能,A连B热点然后访问B指定的http站点即可读取指定文件(或者通过目录寻找到指定文件)。

事不宜迟,马上动工,但是且慢。

python的built-in库http

装了python的电脑上使用以下命令即可建立http服务器同网络下分享文件,什么module也不用装,不用pip也不用conda,(Linux主机上没有装网线/无线网卡,只能展示手机上的QPython),当然手机设备也可以(手机上的python平台以QPython为例)(黑窗子的面对面快传)

代码语言:txt
复制
cd 需要分享的文件夹
python -m http.server 端口号

成功运行(说明:演示中Windows设备使用8088作为服务端口,Linux设备以手机上的QPython和其busybox为例)

windows建立http服务器效果图.png
windows建立http服务器效果图.png
(Linux)QPython建立http服务器效果图.jpg
(Linux)QPython建立http服务器效果图.jpg

再查看一下ip(windows用ipconfig, linux用ip addr show | grep inet)

查看设备ip:Linux
查看设备ip:Linux
查看设备ip:windows.png
查看设备ip:windows.png

上图中的http://::

然后用同网络下的另一台设备访问http://自己设备的网络ip:端口号,如http://192.168.1.125:8088(对应Linux那张图),和http://192.168.1.233:端口号(对应windows那张图)。就能看到文件列表了。

电脑Windows访问手机Linux(QPython)建的http服务器.png
电脑Windows访问手机Linux(QPython)建的http服务器.png

手机访问电脑Windows建的http服务器

手机浏览器打开电脑的分享
手机浏览器打开电脑的分享

<h1 id='end'>QPython打开python -m http.server port</h1>

但是qpython怎么打开python -m http.server port呢

需要间接获得qpy-android.sh的脚本路径,不跑任何脚本项目直接打开终端复制即可,如图

Screenshot_20210606_220004.jpg
Screenshot_20210606_220004.jpg

其中的/data/user/0/com.hipipal.qpyplus/files/bin/qpython3-android5.sh就是我们所需的,不同机子可能有一些差别

所以代码就是

代码语言:txt
复制
import os
from random import randint
cmd="/data/user/0/com.hipipal.qpyplus/files/bin/qpython3-android5.sh -m http.server"
#Your path to share
dp="/storage/emulated/0/"
#dp="/data/user/0/com.hipipal.qpyplus/files"
os.chdir(dp)
with os.popen("ip addr show |"
    	" grep 'inet 192' |"
    	" sed 's/[^\/0-9\.]//g' |"
    	" sed 's/\/.*//g'") as fp:
 ipstr=fp.read()
ipstr=ipstr[0:len(ipstr)-1]

while 1:
 i=randint(1024,65535)
 arg=" %d"%i
 print("\n\nenter %s\n\n"%(
  	ipstr+":"+arg[1:]))
 print("hit Control-C to quit")
 ret=os.system(cmd+arg)
 print("exitcode=", ret)
 #listen to 0.0.0.0 means 
 # listen to any ip thats points
 # here
 if ret in (33280,0): break

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 面对面快传
  • python的built-in库http
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档