我在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)。
非常感谢任何帮助。
答案 0 :(得分:0)
检查路由器设置,确保运行服务器的本地计算机具有足够的网络权限,以便首先建立连接。最简单的方法是在路由器配置中找到DMZ设置并添加服务器计算机的IP地址。我不确定这是不是问题,因为你说你仍然收到了套接字的政策请求......这令人费解。然而,目前你所提供的细节我所做的一切都是做出有根据的猜测,在这一点上,DMZ听起来是最可能的原因。
另请注意,在您的域策略中,您确实不应该(在生产代码中)允许任何客户端通过任何套接字进行连接。这违背了安全模型的整个目的。无论如何,这是我能用当前信息给出的最佳答案。我还建议Adobe阅读有关处理ServerSocket和客户端连接的文章。