ActionScript 3.0 套接字无法重新连接
Posted
技术标签:
【中文标题】ActionScript 3.0 套接字无法重新连接【英文标题】:ActionScript 3.0 sockets can't reconnect 【发布时间】:2010-09-05 18:06:37 【问题描述】:在连接超时后,我无法(通过 Socket 和 XMLSocket 类)连接到 TCP 侦听器。
我有一个需要维护与服务器的 TCP 连接的 Flash 小程序。我已经使用计时器、乒乓球系统等实现了超时。但是,有一个问题。在调用 Socket.connect() 时,flash 播放器(9.0.115 和之前的许多其他马厩)通过 SYN 数据包发送 3 个连接请求,中间有一段时间。如果这些都没有得到回复(例如,因为服务器已关闭),我无法让小程序 [尝试] 连接到服务器。曾经。也就是说,在小程序的生命周期内。
澄清和/或总结:
对于任何提供给 Socket.connect() 或 XMLSocket.connect() 的主机/端口对,如果调用失败,任何后续的 connect() 调用都会在Flash 小程序 到相同的主机/端口对被忽略。 (至少据我所知,使用数据包嗅探器。)
我尝试过调用许多 Socket 方法、销毁和重新创建对象、使用 Socket 池以及我现在不记得的各种其他方法;都无济于事。
我目前的解决方案是通过 javascript 调用通知父网页并让它重新加载我的小程序。这不是一个很好的解决方案,我也不打算为 它 导致的问题实施解决方法,因为 Flash 无法正确处理套接字连接。
我一定错过了一些非常简单的东西。
有什么想法吗?
1:我知道你不能真正摧毁物体;我只是删除了对它们的所有引用并希望最好。在这种情况下,我没有尝试显式调用 GC。 (虽然我认为我确实尝试将 Socket 放入一个数组并使用 delete。)
是的,如果连接成功,它会按预期工作(即使稍后连接断开。)
触发这种情况的唯一事件是服务器完全没有响应的情况;就好像 Flash 将主机/端口组合标记为“离线”,并且在小程序的生命周期内不再向其发送任何数据包。
我怀疑主动拒绝连接(例如主机在线但未监听端口)不会导致此问题。
我没有收到任何来自 Socket 的错误消息或任何其他类型的反馈。
当第一个失败时,您是否曾经多次调用 connect() 到同一个主机/端口对? 你怎么知道第一个 connect() 失败了?在随后的 connect() 调用之前,你有没有做任何事情来重置套接字?
【问题讨论】:
如果服务器可用,连接是否正确成功?当它在 3 次后失败时,您是否收到任何错误消息?我在 Sockets 方面做了很多工作,从来没有遇到过这个问题。 【参考方案1】:这可能与未解决的错误FP-269 相关,而该错误又可能与FP-67 具有相同的根本原因。
这个版本应该在 当前的公开测试版发布于 labs.adobe.com
Edwin Wong - [08 年 9 月 23 日下午 4 点 49 分]
我建议你试一试latest public beta...
【讨论】:
谢谢,我从未找到 Adobe 的错误数据库。过去可能已经提交了很多......以上是关于ActionScript 3.0 套接字无法重新连接的主要内容,如果未能解决你的问题,请参考以下文章