zoukankan      html  css  js  c++  java
  • FLASH中用XMLSOCKET做聊天室

    经过几天的努力,终于连通了服务器和客户端。起先是用FLASH8的AS2.0来做的,结果在本地可以连通,一放到页面发布到APACHE上就不行。参考了网上的资料发现,原来是flash有个安全策略的控制。具体搜到的内容如下:
    如果连接失败,可那是下面两种原因的一种:一种是连接立即失败和运行时错误,另一种是如果无法完成连接从而产生一个ioError或者securityError事件.关于错误事件处理信息的描述,我们打算改日讨论.
        请牢记,当与一个主机建立一个Socket连接时,Flash Player要遵守如下安全沙箱规则.
        
    1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接.
        
    2.一个从网上发布的.swf文件是不可以访问本地服务器的.
        
    3.本地未通过认证的.swf文件是不可以访问任何网络资源的.
        
    4.你想跨域访问或者连接低于1024的端口,必须使用一个跨域策略文件.
        如果尝试连接未认证的域或者低端口服务,这样就违反了安全沙箱策略,同时会产生一个securityError事件.这些情况都可以通过使用一个跨域策略文件解决.

    在Adobe Flash Player升级到9.0.124后,由于安全策略的更改,使得在socket或xmlsocket的应用里,原先如用http方式加载安全策略的手段不能继续使用了,类似此类应用必须使用xmlsocket://方式来提供安全策略。flashplayer的安全策略检测过程如下:

    1,首先检测目标服务器的843端口是否提供安全策略
    2,如果1没有检测到策略,则检测actionscript是否使用了Security.loadPolicyFile(xmlsocket://) 手段提供安全策略,如果还没检测到,则使用第3步检测
    3,检测目标服务器目标端口是否提供安全策略

    如果上述检测都不成功,则socket或xmlsocket则拒绝连接目标服务器。

    这就是说,现在我们还必须为应用提供一个提供安全策略的socket服务,正好,adobe开发人员提供了这样一个小工具,本人测试过,能使用。

    具体内容请看:http:
    //www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

    请使用了socket 或xmlsocket的开发者尽早更换安全策略提供方式吧,否则新版flashplay用户就该不能正常使用你的应用了。 
    因此换了FLASH CS3来进行编程,并在服务器端做了安全请求(<policy-file-request/> )的回应,这样就可以顺利连通了!速度还可以!
     
    顺便说一下策略文件:
     
     <cross-domain-policy>
      
    <allow-access-from domain="127.0.0.1" to-ports="8080" />
      
    <allow-access-from domain="内网IP" to-ports="8080" />
      
    <allow-access-from domain="公网IP" to-ports="8080" />
      
    <allow-access-from domain="www.XXXX.com.cn" to-ports="8080" />
     
    </cross-domain-policy>
    其中设置的DOMAIN应该是客户访问该FLASH时FLASH所在的服务器名或者IP

    直接SOCKET编程又有些不一样,详见http://blog.csdn.net/luying777/archive/2008/02/26/2122613.aspx
  • 相关阅读:
    一些开发海学网站过程中的Javascript
    准备学习 Windows Forms 2.0 Programming
    终于买了个Dell d400二手笔记本
    Asp.Net应用程序中为什么要MachineKey?如何生成MachineKey?
    今天装了苏州数字电视
    windows Forms 编程实战 源代码
    重新整理 .net core 实践篇——— filter[四十四]
    not noly go —— 运行轨迹[一]
    .NET CLR基本术语
    [转]SqlServer四个排名函数(row_number、rank、dense_rank和ntile)的比较
  • 原文地址:https://www.cnblogs.com/enli/p/1181388.html
Copyright © 2011-2022 走看看