|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
Flash特别适用于创建通过Internet提供的内容,因为它的文件非常小。Flash是通过广泛使用矢量图形做到这一点的。
poluoluo中心提醒:良多人在处置平安战略时碰到成绩,我本人也总结了一些履历,供人人参考吧.
良多人在处置平安战略时碰到成绩,我本人也总结了一些履历,供人人参考吧.在FlashPlayer9.0.124.0及今后的版本中,socket战略文件关于任何Socket毗连都是必须的。也就是说,不管毗连到哪个端口(即便毗连到供应SWF文件的统一主机上的端口),方针主机上都必要套接字战略文件。毗连步骤:
0.不管是低于仍是高于1024端口,基于文件体系时都不会哀求战略文件,基于收集时才会哀求.
1.起首收回以null开头的<policy-file-request/>的动静,反省服务器843端口是不是有平安战略文件,战略文件格局为:
<cross-domain-policy>
<allow-access-fromdomain="*"to-ports="80-9000"/>
</cross-domain-policy>
发还战略文件的时分需要以0开头,假如843端口在3秒内没有哀求到战略文件大概to-ports设置的端口不同意链接,则断失落链接抛securityError,这个是flash自动倡议的.
2.假如您的客户端socket或xmlsocket毗连中设置了Security.loadPolicyFile("xmlsocket://服务地点:使用端口"),则毗连您的使用方针端口哀求平安战略文件,哀求和呼应的体例如上,不设置是不会哀求的.发哀求是在挪用connect之前.
3.假如您是http哀求体例要设置Security.loadPolicyFile("http://服务地点/crossdomain.xml"),crossdomain.xml文件内容如上,放在网站根目次就好了.比方mop的http://www.mop.com/crossdomain.xml
办理计划1:利用adobe官方供应的文件间接在服务器的843端口上创建服务,如许呼应速率最快,但关于使用的部署就贫苦了http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html
办理计划2:客户端必需加Security.loadPolicyFile("xmlsocket://服务地点:使用端口"),在服务真个使用端口上的公有协定上处置,一样平常的协定是长度+范例+数据,如许判别长度是0x3C70范例0x6C69,独自处置这个动静,但对本人的公有协定处置仍是有影响。
为何是如许的长度和范例看图:
办理计划3:独自在服务使用上处置843端口,和其他使用的服务剥离出来:
- //平安战略服务
- publicvoidstartPolicyServer()throwsIOException{
- IoAcceptoracceptor=newNioSocketAcceptor();
- acceptor.setHandler(newPolicyServerHandler());
- acceptor.bind(newInetSocketAddress(843));
- System.out.println("平安战略服务侦听端口:843");
- }
- //其他使用服务
- ..................
- ..................
- //独自的平安战略处置器
- publicclassPolicyServerHandlerextendsIoHandlerAdapter{
- //22字节+0占1个字节
- Stringsecurity_quest="<POLICY-FILE-REQUEST/>";
- //最初以0开头
- StringpolicyStr="<CROSS-DOMAIN-POLICY>
<ALLOW-ACCESS-FROMto-ports="80-9000"domain="*"/>
</CROSS-DOMAIN-POLICY>
";
- privatefinalLoggerlog=Logger.getLogger(PolicyServerHandler.class.getName());
- publicvoidmessageReceived(IoSessionsession,Objectmessage)
- throwsException{
- IoBufferprocessBuf=(IoBuffer)session.getAttribute("processBuf");
- processBuf.put((IoBuffer)message);
- processBuf.flip();
- if(getRequest(processBuf)){
- byte[]reps=policyStr.getBytes("UTF-8");
- IoBufferrb=IoBuffer.allocate(reps.length);
- rb.put(reps);//也有putString办法
- rb.flip();
- session.write(rb);//发还
- log.info("sendPolicy");
- }
- }
- //取得平安哀求的字符串
- privateBooleangetRequest(IoBufferbuf){
- Stringreq=newString(buf.array());
- if(req.indexOf(security_quest)!=-1){
- returntrue;
- }
- returnfalse;
- }
- @Override
- publicvoidmessageSent(IoSessionsession,Objectmessage)throwsException{
- session.close(true);
- }
- @Override
- publicvoidsessionClosed(IoSessionsession)throwsException{
- super.sessionClosed(session);
- session.removeAttribute("processBuf");
- }
- @Override
- publicvoidsessionCreated(IoSessionsession)throwsException{
- super.sessionCreated(session);
- IoBufferprocessBuf=IoBuffer.allocate(64);
- session.setAttribute("processBuf",processBuf);
- }
- }
备注:
1mina2.x对照1.x效力更高,丢弃了原本的btyeBuffer,新写了Iobuffer,缘故原由以下:
Itdoesntprovideusefulgettersandputterssuchasfill,get/putString,andget/putAsciiInt()enough.
Itisdifficulttowritevariable-lengthdataduetoitsfixedcapacity
2demux下DemuxingProtocolCodecFactory和MessageDecoder等功效更完美了,decodable判别是不是能剖析数据,decode剖析实践的数据,在处置公有协定上更复杂了
3Flash10socket类新增添timeout属性唆使创建毗连时需守候的毫秒数
若你要观看网页上的多媒体内容,flashplayer几乎是网络上的标准。为此播放器所制作的动画或图像十分常见。 |
|