flash - ActionScript 3.0 套接字无法重新连接

标签 flash actionscript-3 sockets xmlsocket

连接超时后,我无法(通过 Socket 和 XMLSocket 类)连接到 TCP 监听器。

我有一个 Flash 小程序,它需要与服务器保持 TCP 连接。我已经使用定时器、乒乓系统等实现了超时。但是,有一个问题。在调用 Socket.connect() 时,flash 播放器(9.0.115 和之前的许多其他稳定器)通过 SYN 数据包发送 3 个连接请求,中间有一段时间。如果这些都没有得到回复(例如,因为服务器已关闭),我将无法让小程序 [尝试] 连接到服务器。曾经。也就是说,在小程序的生命周期内。

澄清和/或总结:

对于提供给 Socket.connect() 或 XMLSocket.connect() 的任何主机/端口对,如果调用失败,则任何后续 connect() 调用任何其他 Socket(或 XMLSocket)实例 在 Flash 小程序的生命周期内 到相同的主机/端口对被忽略。 (至少据我所知,使用数据包嗅探器。)

我曾尝试调用许多 Socket 方法、销毁¹并重新创建对象、使用 Sockets 池以及我现在不记得的各种其他方法;一切都无济于事。

我当前的解决方案是通过 JavaScript 调用通知父网页并让它重新加载我的小程序。这不是一个很好的解决方案,我不打算为它引起的问题实现变通方法,仅仅因为 Flash 无法正确处理套接字连接。

我一定错过了一些非常简单的东西。

有任何想法吗?

1:我知道你不能真正破坏物体;我只是删除了对它们的所有引用,并希望一切顺利。在这种情况下,我没有尝试显式调用 GC。 (虽然我想我确实尝试将 Socket 放在一个数组中并使用删除。)

是的,如果连接成功,它会按预期工作(即使连接稍后断开。)

触发这种情况的唯一事件是服务器根本没有响应的情况;就好像 Flash 将主机/端口组合标记为“离线”,并且在小程序的整个生命周期内不再打扰向它发送任何数据包。

我怀疑主动拒绝连接(例如主机在线但未监听端口)不会导致此问题。

我没有从 Socket 收到任何其他类型的错误消息或反馈。

当第一个失败时,您是否曾经多次调用 connect() 到同一个主机/端口对?
你怎么知道第一个 connect() 失败了?在随后的 connect() 调用之前,您是否做了任何重置套接字的操作?

最佳答案

这可能与 Unresolved 错误 FP-269 有关这反过来可能与 FP-67 具有相同的根本原因.

This build should be fixed in the current public beta release found on labs.adobe.com

Edwin Wong - [09/23/08 04:49 PM ]



我建议你给 latest public beta一枪……

关于flash - ActionScript 3.0 套接字无法重新连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8939/

相关文章:

actionscript-3 - 覆盖继承的 getter/setter

flash - 在 AS3 中获取域

java - 当存在多个客户端时如何向单个客户端发送消息

sockets - 何时关闭套接字 tcp

android - 在 WebView 中捕获 Flash 内存不足错误?

c# - 微软如何从 silverlight 中赚钱? Adobe 如何从 Flash 中赚钱? C#

facebook - 使用提要对话框控制发布到 Facebook 的 swf 的大小

actionscript-3 - As3字体嵌入

javascript - 查找两个日期之间天数差异的问题

c++ - 在 C++ 中通过 SSH 隧道连接到 MySQL