有时我无法从PC浏览器连接到运行在Android手机上的http服务器,但是当我无法通过PC浏览器连接时,仍然可以使用相同的ip:port组合从手机浏览器连接(LAN)。
我的手机(Google Nexus 5X)上有一个运行在Android后台服务中的http服务器。通常情况下一切正常:我可以从手机和PC的浏览器连接到http服务器。
有时我无法从PC连接到http服务器。在使用下面详述的不可接受的解决方案之前,我将始终无法从PC连接到http服务器。一旦使用了该解决方案,我就可以从我的PC持续连接到http服务器,而不会出现任何问题,直到某个时候我再也无法这样做了。似乎每天下班回家时,直到使用了无法接受的解决方案,我才能从PC连接到手机的http服务器。我最好的猜测是,这个问题可能是由于一个小时没有连接到手机或切换wifi网络,但我不知道根本原因。
在所有这些示例中,我手机的wifi局域网ip是192.168.1.20(路由器中的静态条目),而我应用的http服务器正在端口8081上运行。http服务器正在我的手机上运行,但是我无法通过192.168.1.20:8081(connection refused (ERR_CONNECTION_REFUSED))从PC浏览器连接到http服务器。
假设:也许我的手机只是关闭了与wifi的连接以节省电力。
测试:在手机上打开浏览器并加载google.com。我的手机的浏览器能够毫无问题地加载google.com,它的wifi局域网ip是192.168.1.20,但是我仍然无法通过PC的浏览器连接到192.168.1.20:8081。
测试:从手机的浏览器连接到192.168.1.20:8081。我可以从http服务器成功加载页面。因此,我的电话正在使用该LAN ip,并且我的服务器确实在此端口上运行。但是,这样做之后,我仍然无法从PC浏览器连接到192.168.1.20:8081。相同的连接被拒绝。
测试:重新启动应用程序,释放http端口并再次绑定到该端口。没运气。我无法从PC浏览器连接到192.168.1.20:8081。重新启动后,我仍然可以从手机的浏览器连接到192.168.1.20:8081。
测试:下拉android系统托盘。单击wifi按钮以关闭wifi。再次单击wifi按钮以重新打开wifi。成功!我可以再次从PC浏览器连接到192.168.1.20:8081。
我希望将我的应用程序变成可公开使用的应用程序,并且当这种情况出现时,用户必须打开和关闭其wifi是不可接受的。我需要更好的解决方案。
你知道发生了什么吗?
我认为android设备正在拒绝来自网络的所有传入连接。如果是这样,您知道如何告诉android重新允许来自设备外部的连接吗?