【问题标题】:ActionScript 3.0 How to properly connect? "localhost" or "192.168.XXX.XXX"?ActionScript 3.0 如何正确连接? “本地主机”还是“192.168.XXX.XXX”?
【发布时间】:2014-04-19 11:16:37
【问题描述】:

我已经为此苦苦挣扎了三天。它是一个 android 客户端应用程序,通过本地网络上的 Wifi 连接到服务器 AIR 应用程序。 我需要我的应用程序在每次启动时连接到服务器,而不要求用户输入本地 IP,以防它发生变化。 似乎有很多方法可以确保连接成功,但我想确保我可以在没有 RTMFP 或 PHP 或 SharedObject 东西的帮助下进行。 我可以使用 Android 客户端的 NetworkInterface 和 NetworkInfo ANE 获取本地 IP。然后我使用变量 mySocket.connect(ipAddress, 8888);

但是有一个问题: 1) 通过 Wifi 在 Android 上调试时 检测到的IP 192.168.137.2 2)在Flash上​​调试时,在电脑上 检测到的IP 192.168.137.3 所以,本地IP是不一样的。所以客户端无法连接。如果我手动设置该 IP,一切正常,但我需要一个可以工作的代码,即使本地网络上的 IP 发生了变化。

正如我提到的,在 IP 更改时创建一个 textInput 字段并要求用户手动输入 IP 不是一个选项。

我的问题是为什么使用“localhost”作为 socket.connect(host, port) 的主机参数不起作用?如果是这样,则根本不需要检测本地 IP。 “本地主机”仅在客户端在计算机上运行时才对我有用,而不是在 Android 上运行。 是安全策略文件的问题吗?如果是这样,我不知道如何使用它。我找不到任何关于它的教程。

【问题讨论】:

    标签: android actionscript-3 flash sockets localhost


    【解决方案1】:

    您有两个设备 1. 运行应用程序并充当客户端的 Android 设备 2. 运行 AIR 应用程序并充当服务器的计算机

    这些设备中的每一个都将在网络上拥有自己的 IP 地址。在您的情况下,android 设备 IP 为 192.168.137.2,计算机 IP 为 192.168.137.3。

    为了让客户端连接到服务器,必须有某种方式将服务器 IP 传递给客户端。通常对于这样的应用程序,您需要在设置中手动输入服务器 IP 地址,或者在网络上有一个可用的中心位置,服务器注册它的 IP 地址,客户端从那里获取地址。

    由于您不想使用这些选项中的任何一个,因此最后的手段是实施局域网扫描。您扫描所有网段 192.168.137.* 并搜索为服务器保留的开放端口。这当然不是很好的实现,但如果项目是供您自己使用的,则可以工作。

    最后,“localhost”是映射到回送 IP 127.0.0.1 的名称,这是一个特殊地址,用于连接到正在运行的同一设备上。在您的情况下,如果 android 应用程序正在连接到 localhost,它正在尝试连接到 android 设备本身。

    【讨论】:

    • 此外,在某些情况下 localhost 可能无法映射到 127.0.0.1 要解决此问题(如果您收到 127.0.0.1 而不是 localhost 的响应),您可以打开并编辑“主机”文件位于 C:\Windows\System32\drivers\etc 并添加此行:127.0.0.1 localhost
    • 感谢您的详细解答。在没有 Internet 连接的环境中,我应该使用 wampserver 共享 ip 吗?还是有更好的方法?
    猜你喜欢
    • 1970-01-01
    • 2020-01-20
    • 1970-01-01
    • 2019-07-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多