air 2.6 serversocket和actionscript 3套接字连接

时间:2012-03-09 18:02:39

标签: actionscript-3

我在AIR 2.6中编写了一个服务器应用程序。我使用ServerSocket类作为服务器端,客户端使用actionscript 3编写并使用Socket类。当我使用本地IP(127.0.0.1或192.168.0.2)将客户端连接到服务器时,收到此消息:<policy-file-request/>。然后,我将我的策略文件从服务器发送到客户端,并且连接成功。

但是,当我使用我的全局IP(我的ISP分配的IP)将客户端连接到服务器时,我收到相同的策略文件请求消息,但无法建立连接。港口开放(843,4444和5555),但仍然没有运气。我的政策文件如下:

< ?xml version="1.0"?>< !DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">< cross-domain-policy>< site-control permitted-cross-domain-policies="master-only"/>< allow-access-from domain="*" to-ports="*" />< /cross-domain-policy>

我有一个带字符串类型的变量,它等于这个策略+ String.fromCharCode(0)。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

检查路由器设置,确保运行服务器的本地计算机具有足够的网络权限,以便首先建立连接。最简单的方法是在路由器配置中找到DMZ设置并添加服务器计算机的IP地址。我不确定这是不是问题,因为你说你仍然收到了套接字的政策请求......这令人费解。然而,目前你所提供的细节我所做的一切都是做出有根据的猜测,在这一点上,DMZ听起来是最可能的原因。

另请注意,在您的域策略中,您确实不应该(在生产代码中)允许任何客户端通过任何套接字进行连接。这违背了安全模型的整个目的。无论如何,这是我能用当前信息给出的最佳答案。我还建议Adobe阅读有关处理ServerSocket和客户端连接的文章。

http://www.adobe.com/devnet/air/flex/quickstart/articles/communicating_with_sockets.html#articlecontentAdobe_numberedheader_3