ActionScript 3.0如何正确连接? "本地主机"或" 192.168.XXX.XXX"?

时间:2014-04-19 11:16:37

标签: android actionscript-3 flash sockets localhost

我现在正在为此奋斗三天。它是一个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(主机,端口)的主机参数不起作用?如果确实如此,则根本不需要检测本地IP。 "本地主机"仅当客户端在计算机上运行时才适用于我,但不适用于Android。 这是安全策略文件的问题吗?如果是这样,我不知道如何使用它。我无法找到相关的任何教程。

1 个答案:

答案 0 :(得分:0)

你有两个设备 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设备本身。