android 热点上的网络服务器 - 它的 IP 是多少?
webserver on an android hotspot - what's its IP?
我想将 android phone 设置为 wifi 热点,然后在其上 运行 网络服务器,并从连接到的另一个 phone 浏览它热点。
我的 phone 没有 root,但我有 termux,它有很多 unix 实用程序。我不想安装额外的应用程序。 (但很高兴写一个!)
我可以在 http://localhost
(在主机上)上查看 python 的简单网络服务器,但不能在另一个 phone 上查看。我尝试使用主机 phone 的面向 public 的 IP(使用 whatsmyip 类型的网页检查它),但没有用。
有人说移动 ISP 通过映射不同的内部和外部 IP 来防止这种情况...但是在这里,它不通过 ISP,只是热点...
我还尝试了来自 ifconfig
和 android 内 wifi 控件的 IP 地址, 对 netcat
有效 - 但仅连接到热点(不是主机)的客户端 phone 的 IP。
即netcat
在phone上连接热点并监听,然后netcat
在热点phone上连接。 (i.e.role 交换:热点客户端是netcat服务器)。奇怪的是,热点 phone 似乎 没有 IP(至少,到目前为止我还没有发现)。但它必须有一个,不是吗,netcat
才能连接...?
无论如何,我想要热点主机上的网络服务器,所以我需要它的 IP 才能连接到它...有没有办法得到它?
这已经困扰我很久了。
非常感谢您的帮助!
编辑 this question 的答案说它(几乎)总是 192.168.43.1。我现在不能尝试;我有的时候会更新。
更新
1. 192.168.43.1
有效
2. py http.server
适用于常规文件(例如 txt、pdf),但视频文件似乎需要一些它缺少的流媒体协议。我发现 lighttpd
有这个(使用 apt install lighttpd
在 termux
内可用)。但它需要配置(并且不需要 eg/default)。我用过:
$ 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 热点 - 这对于互联网访问很有意义...但是在这里,我只希望客户端可以访问主机,不能让整个互联网访问它。所以我发现你可以关闭数据访问来防止这种情况发生,热点仍然有效。 (肯定有办法以编程方式在飞行模式下设置热点...)
给你! Phone 作为媒体服务器。
public static String getDeviceIpAddress( ) {
String deviceIpAddress = "###.###.###.###";
try {
for (Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces(); enumeration.hasMoreElements();) {
NetworkInterface networkInterface = enumeration.nextElement();
for (Enumeration<InetAddress> enumerationIpAddr = networkInterface.getInetAddresses(); enumerationIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumerationIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && inetAddress.getAddress().length == 4)
{
deviceIpAddress = inetAddress.getHostAddress();
Log.e(TAG, "deviceIpAddress: " + deviceIpAddress);
}
}
}
} catch (SocketException e) {
Log.e(TAG, "SocketException:" + e.getMessage());
}
return deviceIpAddress;
}
我想这对你有帮助。
我想将 android phone 设置为 wifi 热点,然后在其上 运行 网络服务器,并从连接到的另一个 phone 浏览它热点。
我的 phone 没有 root,但我有 termux,它有很多 unix 实用程序。我不想安装额外的应用程序。 (但很高兴写一个!)
我可以在 http://localhost
(在主机上)上查看 python 的简单网络服务器,但不能在另一个 phone 上查看。我尝试使用主机 phone 的面向 public 的 IP(使用 whatsmyip 类型的网页检查它),但没有用。
有人说移动 ISP 通过映射不同的内部和外部 IP 来防止这种情况...但是在这里,它不通过 ISP,只是热点...
我还尝试了来自 ifconfig
和 android 内 wifi 控件的 IP 地址, 对 netcat
有效 - 但仅连接到热点(不是主机)的客户端 phone 的 IP。
即netcat
在phone上连接热点并监听,然后netcat
在热点phone上连接。 (i.e.role 交换:热点客户端是netcat服务器)。奇怪的是,热点 phone 似乎 没有 IP(至少,到目前为止我还没有发现)。但它必须有一个,不是吗,netcat
才能连接...?
无论如何,我想要热点主机上的网络服务器,所以我需要它的 IP 才能连接到它...有没有办法得到它?
这已经困扰我很久了。 非常感谢您的帮助!
编辑 this question 的答案说它(几乎)总是 192.168.43.1。我现在不能尝试;我有的时候会更新。
更新
1. 192.168.43.1
有效
2. py http.server
适用于常规文件(例如 txt、pdf),但视频文件似乎需要一些它缺少的流媒体协议。我发现 lighttpd
有这个(使用 apt install lighttpd
在 termux
内可用)。但它需要配置(并且不需要 eg/default)。我用过:
$ 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 热点 - 这对于互联网访问很有意义...但是在这里,我只希望客户端可以访问主机,不能让整个互联网访问它。所以我发现你可以关闭数据访问来防止这种情况发生,热点仍然有效。 (肯定有办法以编程方式在飞行模式下设置热点...)
给你! Phone 作为媒体服务器。
public static String getDeviceIpAddress( ) {
String deviceIpAddress = "###.###.###.###";
try {
for (Enumeration<NetworkInterface> enumeration = NetworkInterface.getNetworkInterfaces(); enumeration.hasMoreElements();) {
NetworkInterface networkInterface = enumeration.nextElement();
for (Enumeration<InetAddress> enumerationIpAddr = networkInterface.getInetAddresses(); enumerationIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumerationIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress() && inetAddress.getAddress().length == 4)
{
deviceIpAddress = inetAddress.getHostAddress();
Log.e(TAG, "deviceIpAddress: " + deviceIpAddress);
}
}
}
} catch (SocketException e) {
Log.e(TAG, "SocketException:" + e.getMessage());
}
return deviceIpAddress;
}
我想这对你有帮助。