我想将 Android 手机设置为 wifi 热点,然后在其上运行网络服务器,并从连接到该热点的另一部手机浏览它。
我的手机没有root,但我已经root了termux http://termux.com,其中有许多 unix 实用程序。我不想安装额外的应用程序。 (但很高兴写一篇!)
我可以在上查看 python 简单网络服务器http://localhost
(在主机上),但在另一部手机上则不然。我尝试使用主机电话的面向公众的IP(使用whatsmyip类型的网页检查它),但没有成功。
有人说移动 ISP 通过映射不同的内部和外部 IP 来防止这种情况......但在这里,它不通过 ISP,只是通过热点......
我还尝试了来自ifconfig
以及 Android 内的 wifi 控制,does为。。。工作netcat
- 但仅限连接到热点的客户端电话的 IP(而非主机)。
那是,netcat
在连接到热点的电话上进行监听,然后netcat
在热点电话上连接到它。 (即角色交换:热点客户端是netcat服务器)。奇怪的是,手机热点好像没有have一个IP(至少,到目前为止我还没有发现)。但它必须有一个,不是吗?netcat
连接...?
不管怎样,我想要热点主机上的网络服务器,所以我需要它的IP来连接到它......有没有办法得到它?
这已经困扰我很多年了。
非常感谢您的帮助!
编辑答案这个问题 https://stackoverflow.com/questions/17302220/android-get-ip-address-of-a-hotspot-providing-device?rq=1说它(几乎)总是 192.168.43.1。我现在无法尝试;当我有时会更新。
UPDATE
1. 192.168.43.1
works
2. py http.server
对于常规文件(例如 txt、pdf)效果很好,但视频文件似乎需要一些它所缺少的流协议。我发现lighttpd
有这个(可在termux
using apt install lighttpd
)。但它需要配置(并且没有例如/默认值)。我用了:
$ cat > lighttp.conf
dir-listing.activate = "enable"
server.port = 8000
server.document-root = "MY PATH HERE"
$ lighttpd -D -f lighttpd.conf
目录列表使其更易于使用,但显然此处没有配置安全性,因此要小心您提供的内容。
3. Android(我的 5.1,无论如何)需要先关闭飞行模式,然后才能将其设为 wifi 热点 - 这对于互联网访问有意义...但在这里,我只希望客户端能够访问主机,而不是让它可访问到整个互联网。所以我发现你可以关闭数据访问来防止这种情况,并且热点仍然有效。 (肯定有办法以编程方式在飞行模式下建立热点......)
你有它!电话作为媒体服务器。