【问题标题】:AS3 - how to shutdown tcp connection?AS3 - 如何关闭 tcp 连接?
【发布时间】:2012-10-05 17:22:41
【问题描述】:

尽管 URLLoader 实例使用 close() 方法关闭,但 AS3 程序仍保持连接打开。 加载数据后有什么方法可以立即关闭连接?

使用 netstat 命令从命令行检查连接状态,显示为 Eshtablished。

请提出建议。

【问题讨论】:

    标签: actionscript-3 httpconnection


    【解决方案1】:

    URLLoader 是一个 HTTP 包装器。你必须使用 HTTP 的东西来完成它。 为了关闭连接,您必须将Connection: close HTTP 标头与网络服务器响应一起发送。(请注意,大多数网络服务器的默认值是 Connection: Keep-Alive,这是您的行为看到)。

    为了将它从 Flash 发送到服务器,您必须拥有 local-trustedAIR application 沙箱。在浏览器中(在互联网上)运行时这是不可能的。

    来自docs

    在 Flash Player 和应用程序安全沙箱之外的 Adob​​e AIR 内容中,不能使用以下请求标头,并且受限术语不区分大小写(例如,Get、get、和 GET 都不允许)。此外,如果使用下划线字符(例如,Content-Length 和 Content_Length 都不允许),则适用连字符:

    Accept-Charset, Accept-Encoding, Accept-Ranges, Age, Allow, Allowed, Authorization, Charge-To, Connect, Connection, Content-Length, Content-Location, Content-Range, Cookie、日期、删除、ETag、期望、获取、头、主机、If-Modified-Since、Keep-Alive、Last-Modified、位置、Max-Forwards、选项、来源、发布、代理验证、代理授权、 Proxy-Connection, Public, Put, Range, Referer, Request-Range, Retry-After, Server, TE, Trace, Trailer, Transfer-Encoding, Upgrade, URI, User-Agent, Vary, Via, Warning, WWW-Authenticate, x-flash 版本。

    【讨论】:

    • 谢谢,这真的很有帮助!我可以从这里理解我需要从网络服务器设置响应头“连接:关闭”。如果这是正确的,我不能使用这种方法,因为我只处理客户端代码。来自客户端的任何建议都会很棒!
    • 我也包含了客户端视角。这是一个完整的答案,你不会比这更好。由于您甚至无法在服务器端设置标头(甚至 mod_headers、webserver 配置等),我什至不会让您提升权限,因此您可以直接连接到套接字并实现自己的 HTTP 解析器(因为它需要的不仅仅是配置网络服务器)。
    • 您是否尝试过销毁 URLLoader 对象(这可能不起作用,连接由 Flash 维护以供任何 URLLoader 对象共享),并向 Flash 提示垃圾收集器? stackoverflow.com/a/11450161/584490
    • 是的,在 close() 方法调用之后,我试图使加载器对象无效,但没有工作。是否有特定的方法来提示垃圾收集闪烁?同样你是对的,连接是由 Flash 维护的,正如我观察到的,当编辑器关闭时它才会断开连接。谢谢!
    • 查看我之前评论中答案的链接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 2013-09-04
    • 1970-01-01
    • 2018-06-14
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多