当前位置:  开发笔记 > 编程语言 > 正文

ActionScript 3.0套接字无法重新连接

如何解决《ActionScript3.0套接字无法重新连接》经验,为你挑选了0个好方法。

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

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

澄清和/或总结:

对于给定的对Socket.connect()或XMLSocket.connect()的任何主机/端口对,如果呼叫失败,任何后续connect()调用到任何其他插槽(或的XMLSocket)实例的闪光小应用程序的生命周期内,以相同的主机/端口对被忽略.(至少据我所知,使用数据包嗅探器.)

我试过调用大量的Socket方法,破坏¹并重新创建对象,使用套接字池,以及我现在还记不住的各种其他方法; 一切都无济于事.

我目前的解决方案是通过JavaScript调用通知父网页,让它重新加载我的applet.这不是一个漂亮的解决方案,我不打算为引起的问题实现变通方法,因为Flash无法正确处理套接字连接.

我必须错过一些非常简单的事情.

有任何想法吗?

1:我知道你不能真正摧毁物体; 我只是删除所有对它们的引用并希望最好.在这种情况下,我没有尝试显式调用GC.(虽然我认为我确实尝试将Socket放在数组中并使用delete.)


是的,如果连接成功,它将按预期工作(即使连接稍后丢失.)

触发此事件的唯一事件是服务器根本没有响应的情况; 就像Flash将主机/端口组合标记为"离线"一样,并且在applet的生命周期内不会再向其发送任何数据包.

我怀疑主动拒绝连接(例如主机在线但没有收听端口)不会导致这种情况.

我从Socket中得不到任何错误消息或任何其他类型的反馈.

你有没有多次调用connect()到同一个主机/端口对,当第一个失败时?你怎么知道第一个connect()失败了?在后续的connect()调用之前,你做了什么来重置套接字?

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有