加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flash as3 的 socket 使用时策略加载方式

发布时间:2020-12-15 18:13:56 所属栏目:百科 来源:网络整理
导读:连接到套接字 默认情况下,Flash?Player?会从端口?843?查找套接字策略文件。和?URL?策略文件一样,此文件称为“主策略文件”。 在?Flash?Player?6?中首次引入策略文件时,并不支持套接字策略文件。与套接字服务器的连接由默认位置中的一个策略文件授权,该默

连接到套接字

默认情况下,Flash?Player?会从端口?843?查找套接字策略文件。和?URL?策略文件一样,此文件称为“主策略文件”。

在?Flash?Player?6?中首次引入策略文件时,并不支持套接字策略文件。与套接字服务器的连接由默认位置中的一个策略文件授权,该默认位置是套接字服务器所在主机的?HTTP?服务器的端口?80。Flash?Player?9?仍支持此功能,但?Flash?Player?10?不再支持。在?Flash?Player?10?中,只有套接字策略文件可授权套接字连接。?

与?URL?策略文件类似,套接字策略文件支持元策略语句(用于指定可提供策略文件的端口)。但是,套接字策略文件的默认元策略不是“master-only”而是“all”。即,除非主策略文件指定更具限制性的设置,否则?Flash?Player?假定主机上的任意套接字均可提供套接字策略文件。?

默认情况下禁止访问套接字和?XML?套接字连接,即使所要连接的套接字与?SWF?文件位于同一个域中也是如此。可以从下列任意位置提供套接字策略文件,从而允许套接字级别访问:

端口?843(主策略文件的位置)

与主套接字连接相同的端口

主套接字连接端口之外的端口

默认情况下,Flash?Player?在端口?843?和主套接字连接所在的端口上查找套接字策略文件。如果要从其它端口提供套接字策略文件,SWF?文件必须调用?Security.loadPolicyFile()。

套接字策略文件具有与?URL?策略文件相同的语法,只是前者还必须指定要对哪些端口授予访问权限。如果套接字策略文件来自低于?1024?的端口号,则它可以对任何端口授予访问权限;如果策略文件来自?1024?或更高的端口,则它只能对?1024?端口和更高的端口授予访问权限。允许的端口在?<allow-access-from>标记中的?to-ports属性中指定。单个端口号、端口范围和通配符都是允许值。?

下面是套接字策略文件的示例:

<?xml?version="1.0"?>?<!DOCTYPE?cross-domain-policy?SYSTEM?"http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">?<!--?Policy?file?for?xmlsocket://socks.mysite.com?-->?<cross-domain-policy>??????<allow-access-from?domain="*"?to-ports="507"?/>??????<allow-access-from?domain="*.example.com"?to-ports="507,516"?/>??????<allow-access-from?domain="*.example.org"?to-ports="516-523"?/>??????<allow-access-from?domain="adobe.com"?to-ports="507,516-523"?/>??????<allow-access-from?domain="192.0.34.166"?to-ports="*"?/>??</cross-domain-policy>?

要从端口?843?或主套接字连接所在的端口上检索套接字策略文件,请调用?Socket.connect()或?XMLSocket.connect()方法。Flash?Player?首先在端口?843?上检查是否有主策略文件。如果找到主策略文件,Flash?Player?将检查该文件是否含有在目标端口上禁止套接字策略文件的元策略语句。如果未禁止访问,Flash?Player?首先在主策略文件中查找适当的?allow-access-from语句。如果找不到主策略文件,Flash?Player?将从主套接字连接所在的端口上查找套接字策略文件。

要从其它位置检索套接字策略文件,请首先调用?Security.loadPolicyFile()方法,调用时使用特殊的"xmlsocket"语法,如下所示:?

Security.loadPolicyFile("xmlsocket://server.com:2525");?

先调用?Security.loadPolicyFile()方法,然后再调用?Socket.connect()或?XMLSocket.connect()方法。Flash?Player?随后将一直等待完成策略文件请求,之后再决定是否允许主连接。但是,如果主策略文件指定目标位置不能提供策略文件,则调用?loadPolicyFile()无效,即使该位置有策略文件。?

如果要实现套接字服务器,并且需要提供套接字策略文件,则应决定是使用接受主连接的同一端口提供策略文件,还是使用不同的端口来提供策略文件。无论是哪种情况,服务器都必须等到客户端的第一次传输收到之后才能发送响应。?

当?Flash?Player?请求策略文件时,它始终会在建立连接后传输以下字符串:

<policy-file-request/>

服务器收到此字符串后,即会传输该策略文件。来自?Flash?Player?的请求始终由?null?字节终止,来自服务器的响应也必须由?null?字节终止。?

程序对于策略文件请求和主连接并不会使用同一连接,因此请在传输策略文件后关闭连接。如果不关闭连接,Flash?Player?将关闭策略文件连接,之后重新连接以建立主连接。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读