Android热点上的webserver - 它的IP是什么?

时间:2017-12-01 15:35:21

标签: android ip webserver android-networking hotspot

我想将Android手机设置为wifi热点,然后在其上运行网络服务器,并从连接到热点的另一部手机浏览。

我的手机没有根,但我有termux,它有许多unix实用程序。我不想安装额外的应用程序。 (但很高兴写一个!)

我可以在http://localhost(主机上)上查看python的简单网络服务器,但不能在另一部手机上查看。我尝试使用主机手机的面向公众的IP(使用whatsmyip类型的网页检查它),但没有用。 有人说移动ISP通过映射不同的内部和外部IP来防止这种情况......但是在这里,它不是通过ISP,只是热点......

我还尝试了来自ifconfig和来自android中的wifi控件的IP地址,其中 适用于netcat - 但只有客户端电话的IP连接到热点(不是主持人)。

也就是说,netcat位于连接到热点的电话上并收听,然后热点电话上的netcat连接到它。 (ierole swap:hotspot客户端是netcat服务器)。奇怪的是,热点手机似乎没有一个IP(至少,到目前为止,还没有我能发现的IP)。但它必须有一个,绝对不能,netcat连接......?

无论如何,我想要热点主机上的网络服务器,所以我需要它的IP连接到它...有没有办法获得它?

这一直困扰着我多年。 非常感谢您的帮助!

编辑this question的答案说它(差不多)总是192.168.43.1。我现在不能尝试;我会更新。

更新
1. 192.168.43.1工作 2. py http.server适用于常规文件(例如txt,pdf),但视频文件似乎需要一些它缺少的流协议。我发现lighttpd有这个(使用termuxapt install lighttpd内可用)。但它需要config(并且没有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热点 - 这对于互联网访问是有意义的...但是在这里,我只希望客户端能够访问主机,而不是它可以访问整个互联网。因此,我发现您可以关闭数据访问以防止这种情况,并且热点仍然有效。 (肯定有一种方法可以通过编程方式在飞机模式下设置热点......)

你有它!打电话为媒体服务器。

1 个答案:

答案 0 :(得分:1)

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;
}

这会对你有所帮助。