`
cuixuxucui
  • 浏览: 350917 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

flash socket通讯失败后的事情

 
阅读更多

一、引子是这样的,socket连接失败后需要重连接,只能再new一个新的socket,以前的不好使了。。。

暂时查不到原因,对于IOErrorEvent 和SecurityErrorEvent的派发也不是很清楚。。。

 

package

{

import flash.display.Sprite;

import flash.net.XMLSocket;

import flash.events.Event;

import flash.events.IOErrorEvent;

import flash.events.SecurityErrorEvent;

 

public class XMLSocketTest extends Sprite

{

private var socket:XMLSocket=new XMLSocket();

public function XMLSocketTest()

{

socket.addEventListener( Event.CONNECT, onConnect );

socket.addEventListener(IOErrorEvent.IO_ERROR,onIOError);

socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onSecurityError);

socket.connect("192.168.1.100",8888);

}

private function onConnect( event:Event ):void

{

trace( "The send socket is now connected..." );

}

private function onIOError(e:IOErrorEvent):void

{

trace("errorrrrrrrrrrrr");

socket.close();

socket.connect("192.168.1.100",8888);

trace("reconnecting...");

}

 

private function onSecurityError(e:SecurityErrorEvent):void

{

trace("security error");

}

}

}

 

如上,在IOError事件里重新进行socket.connect(),貌似这个命令不再执行了,因为trace的时候只出现一次trace信息,另外,即使注释掉socket.close()那行效果也是一样。

二、查找socket安全问题相关资料,提到了一些重要信息:

1.请求crossdomain.xml:

socket在connect时会往服务器843端口发送一个字符串 "<policy-file-request/>"请求crossdomain.xml,3秒后取不到,就会查看自己swf中有没有使用Security.loadPolicyFile来加载这个文件,如果还是没有,就查看要连接的目标端口有没有这个文件。如果都没有,则会报securityError

参考Flash Socket通信的安全策略问题 843端口(转载)

  解决AS3 Socket编程中最令人头疼的问题

2.另一个错误:

根据上面的资料,我用了第二种:Security.loadPolicyFile("http://www.1.com/crossdomain.xml");不过报了这样的错误:

错误: [strict] 将忽略 http://www.1.com/crossdomain.xml 处的策略文件,因为出现 Content-Type“application/octet-stream” 错误。请访问 http://www.adobe.com/go/strict_policy_files_cn 以解决此问题。

 

这是因为服务端将xml文件的Content-Type设置成了application/octet-stream:

<mime-mapping>

    <extension>xml</extension>

    <mime-type>application/octet-stream</mime-type>

</mime-mapping>

 

需要改为:

<mime-mapping>

    <extension>xml</extension>

    <mime-type>application/xml</mime-type>

</mime-mapping>

参考在flex里使用 loadPolicyFile 配置跨域组策略文件时报错

3.进一步查询得知,加载文件用的安全策略文件和socket通讯用的策略文件在flash player某个版本中,被分开处理了。。。。socket的请求必须要通过端口来获得这个策略文件。原文摘一下:

 

 从一些官方的一些资料中了解了一下。以前的Flash Player无论你采用urlRequest的http请求方式或者xmlsocket socket方式,他们都共用一个安全策略文件。这个策略文件只要你放在主域的目录下就行了。而现在不行了,现在的策略文件如果你使用http请求方式那么需要把策略文件放在目录下面,如果你使用socket请求方式就必须通过socket端口来接收这个策略文件。

      对应调用的方式为:

      http请求——》Security.loadPolicyFile(“http://www.xxx.com/crossdomain.xml”)

      socket或xmlsocket请求——》Security.loadPolicyFile(“xmlsocket://www.xxx.com:port”)

 所以上述第二步中用的HTTP请求方式是无效的~

参考Flash Socket通信的安全策略问题 843端口(转载)

  socket安全策略的问题

4.加载和socket通信策略文件的分开,具体是在flash player 9.0.124版本(Adobe在08年4月8日放出)。

在我们的socket通信之前,flash会使用一个验证socket来验证这个域的安全,得到回复后断开。然后才会连接我们自己的socket.这方面网上的资料挺多。

参考flex socket安全策略<policy-file

      总结Flash XMLSocket 通信问题

分享到:
评论

相关推荐

    FlashSocket与C#通讯

    "FlashSocket与C#通讯"是一个关键的主题,涉及到客户端与服务器之间的低延迟、双向通信。以下是关于这个主题的详细解释: FlashSocket,全称Adobe Flash Socket,是Adobe Flash Player支持的一种高级网络功能,它...

    Flash 与 c# Socket通讯 Demo 简单聊天室

    Flash 与 c# Socket通讯 Demo 简单聊天软件

    PB9实现的SOCKET通讯协议

    - 关闭SOCKET:完成通讯后,`pbsock.Close()`方法关闭SOCKET连接。 4. **源码学习与调试**: - 提供的压缩包中包含了EXE可执行文件和源码,这为学习和理解PB9中的SOCKET实现提供了宝贵的资源。 - 通过查看源码,...

    发那科机器人与视觉socket通讯

    在本文中,我们将深入探讨“发那科机器人与视觉socket通讯”的相关知识点,结合描述和提供的文件名,我们可以梳理出以下关键内容: 1. **视觉通信**:视觉通信是通过摄像头或其他图像采集设备获取环境信息,并通过...

    C#串口通讯和socket通讯demo

    在IT领域,尤其是在软件开发中,串口通讯和Socket通讯是两种常见的通信方式,尤其在设备交互、嵌入式系统以及物联网(IoT)应用中非常常见。本篇将详细探讨C#环境下如何利用`SerialPort`类进行串口通讯以及如何使用`...

    codesys socket 通讯实例的工程项目

    内容包含Soket通讯测试客户端以及服务端的软件,以及Codesys工程项目的示例程序。 主要用设备用于相机以及上位机的Socket通讯

    Socket通讯聊天文档及代码

    Socket通讯聊天文档及代码 Socket通讯聊天文档及代码 Socket通讯聊天文档及代码 Socket通讯聊天文档及代码 Socket通讯聊天文档及代码 Socket通讯聊天文档及代码 Socket通讯聊天文档及代码

    AB PLC 与 PC 通过 socket 通讯文档

    AB PLC(可编程逻辑控制器)与个人计算机(PC)通过Socket通讯是一项涉及工业自动化和网络技术的功能。为了实现这一通讯,通常需要对AB PLC进行特定的配置,并确保PC端的软件能够与之兼容和通信。本知识点将从以下几...

    flash socket通信

    flash socket通信

    很实用的 socket通讯工具

    Socket通讯是计算机网络编程中的一个核心概念,它提供了一种在不同进程或计算机间进行数据交换的方法。在本文中,我们将深入探讨“很实用的Socket通讯工具”这一主题,了解Socket的基本原理、如何使用以及其在实际...

    C# Socket通讯/TCP通讯,完整代码demo

    6. **关闭连接**:完成通讯后,应使用Close方法关闭Socket连接。 在C#的SocketDemo中,你可能看到以下关键代码片段: ```csharp // 创建Socket对象 Socket serverSocket = new Socket(AddressFamily.InterNetwork,...

    socket通讯测试工具

    Socket通讯测试工具是一种实用的软件应用,主要用于帮助程序员在开发过程中检查和验证网络通信功能,尤其是基于TCP/IP的socket通信。这个工具具有双重角色,既能够作为服务器端,也能作为客户端,使得用户能够轻松地...

    三菱Q系列PLC之间SOCKET通讯详解.docx

    《三菱Q系列PLC之间SOCKET通讯详解》 在现代工业自动化领域,PLC(可编程逻辑控制器)之间的通信是实现设备间协同工作的重要环节。三菱Q系列PLC以其强大的功能和稳定性,在众多PLC产品中脱颖而出。本文将深入探讨...

    WfServer_socket通讯_

    "WfServer_socket通讯_"这个主题显然关注的是如何通过Socket实现服务器与客户端之间的数据交换。Socket编程通常涉及TCP/IP协议栈,允许应用程序通过网络发送和接收数据。 1. **Socket基本概念**: Socket,也称为...

    欧姆龙TCP UDP Socket网络通讯.zip

    - TCP Socket建立在TCP协议之上,它确保数据的有序、无损传输,通过三次握手建立连接,并在传输完成后通过四次挥手断开连接。 - 在欧姆龙PLC中,FINS TCP(Factory Integrated Network Protocol over TCP)是用于...

    AB PLC 建立开放式Socket通讯

    一手原创,内含程序注释、在项目上已经验证,通讯成功。 验证的硬件:1756-EN2T和1769-l30er...AB PLC通过1756-en2t或者1769-l30er直接与PC或者其它直持socket的控制器实现数据通讯功能,实现直接通讯,绕开rslinx 等。

    C# SOCKET 通讯例子

    在"C# SOCKET 通讯例子"中,我们有两个关键部分:通讯Client端和通讯Server端。以下是这两个部分的简要概述: 1. **通讯Server端**: - 创建Socket对象并绑定到特定的IP地址和端口号,这通常使用`Socket.Bind()`...

    Socket通讯模拟工具

    这个工具就是一个能在线模拟socket通讯工具,并且能检测通讯是否能正常响应和发送信息

    Socket通讯代码示例

    Socket通讯在IT行业中是网络编程的基础,主要用于实现进程间的通信,尤其在分布式系统、服务器端应用和客户端应用间的数据交互中扮演着重要角色。在这个"Socket通讯代码示例"项目中,我们主要会探讨以下几个核心知识...

    FlashSocket.IO-0.7.x.zip

    4. **故障恢复**:FlashSocket.IO具备自动重连机制,当网络连接中断后,它可以尝试重新建立连接,保证服务的连续性。 5. **跨域支持**:由于Flash Player允许跨域通信,FlashSocket.IO可以轻松地与不同源的Socket....

Global site tag (gtag.js) - Google Analytics