flex和java交互 scoket

面,阿堂和朋友们简单聊了一下,给出了一些FLEX和JAVA交互的操作图的界面一文(见 Flex socket通信实践学习笔记(1)),见阿堂的新浪空间(http://blog.sina.com.cn/s/blog_4c925dca0100s38p.html),由于阿堂平常一直比较忙,所以代码没有粘出来,今天我就给出该操作图相应的后台服务端java代码和客户端的FLEX代码.对于flex和JAVA的交互,我这里也简单总结一下,谈一下自己的看法!

1.flex和java交互时,需要三次握手过程,握手成功后,flex客户端会检测通信端口中是否存在安全策略文件,此时客户端发送以下报文内容.

<policy-file-request/>

服务端在收到该报文后,应该向客户端发送安全策略文件。

//Flex 安全策略文件

String xml ="<cross-domain-policy>";

xml = xml+"<site-control permitted-cross-domain-policies='all' />";

xml = xml+"<allow-access-from domain='*' to-ports='"+SERVER_PORT+"' />";

xml = xml+"</cross-domain-policy>";

之后再进行正常Socket通信.


所以,朋友们会在阿堂后面粘出来的代码中看到有如下代码

if(head.equals("<policy-file-request/>")){

pw.print(xml+"\0");

pw.flush();

}else{

...

}

代码的判断,对于安全策略文件,不是阿堂这篇文章讨论的重点,所以我就不再详细说明了。有兴趣的朋友可以继续看flex安全策略文件方面的介绍和说明,网上有很多这方面的介绍

2.flex和java交互中需要约定socket方面的通信协议或者说是rule.注意,这个是相对于开发的项目或游戏本身约定的通信协议,也就是说对于开发某个游戏,双方需要实际交互过程中,来议定的一些规则.如下面简单的网络聊天室,就议定了五类规则,0表示登录信息,1表示普通信息,2表示客户端总人数,3表示离开信息,4表示用户列表信息. (当然,我们用BlazeDS,apache mina等框架开发较为大中型的flash游戏时,我们议定的规则会比下述规则复杂得多.象我们部门其它项目组,开发的“德州扑克”,用的apache mina和flex交互时,就议定了2m-30种协议规则,每种规则传递的不是简单的数字,而是更为丰富的Array数组。java端是传递的JSon格式到flex客户端,flex端传递给java端是Array数组)但是,不管传递的数据有多复杂或者用什么框架,如BlazeDS,apache mina,FMS,Red5等,Flex和Java交互的基本原理都是一样的,只不过,用这些框架时,我们对于Socket的框架少了一些操作而也,很多的对于Socket框架方面的底层封装少了很多的操作,大大方便了Flex和服务端的交互.

你可能感兴趣的:(Scoket)