【问题标题】:air 2.6 serversocket and actionscript 3 socket connectionair 2.6 serversocket 和 actionscript 3 socket 连接
【发布时间】:2012-03-09 18:02:39
【问题描述】:

我在 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)。

任何帮助将不胜感激。

【问题讨论】:

  • 您使用什么端口连接到您的 isp?
  • 你在做 Security.allowDomain(host);和 Security.loadPolicyFile("xmlsocket://" + host + ":" + "843");

标签: actionscript-3


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 2012-10-30
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2017-07-02
    • 1970-01-01
    相关资源
    最近更新 更多