连接到套接字

默认情况下, 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 将
关闭策略文件连接,之后重新连接以建立主连接。   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值