首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Flash >

FLASH与服务器通信 (JAVA)

2012-07-16 
FLASH与服务器通讯 (JAVA)1.FLASH 通过URL地址获得服务器数据。这种方式最为简单,就像在浏览器的地址栏里面

FLASH与服务器通讯 (JAVA)
1.FLASH 通过URL地址获得服务器数据。

这种方式最为简单,就像在浏览器的地址栏里面敲一样。
先建立一个URLRequest,然后用URLLoader载入就行了。

下面这个是载入一个图片,html页面也用同样方法载入。

//worldterminator原创,转载请注明此处

?

这种方法的缺点显而易见,大量的参数必须写到地址里,数据被暴露而且格式转换麻烦。

//worldterminator原创,转载请注明此处

2.通过AMF协议来通讯。

AMF协议是ADOBE自己开发的一种建立在HTTP基础上的协议。可以装一个flash mx remoting来实现或者装openAMF来实现,这里只讨论openAMF。先下载一个openAMF,最好带example版本的。然后把openamf.ear放到tomcat的webapps下,启动tomcat,输入
http://localhost:8080/openamf/gateway

如果看到空白页,说明openAMF好用了。如何用呢?


amf的通信方式是在服务器端把java的class放到web-inf的class中,然后在flash端直接调用这个class的方法就行了。
比如helloworld这个例子。

?


注意!如果把这个串存到字符串里发回去,不要忘记那个\0,XML都是以\0结尾的。

然后FLASH会主动断开,再执行连接,然后才算连上。
//worldterminator原创,转载请注明此处
先看FLASH端代码如何写:

?

?//worldterminator原创,转载请注明此处

sender:

?

package for_flash_socket;import java.util.*;import java.io.*;public class Sender {    ArrayList outputArrayList;    public Sender()    {        outputArrayList = new ArrayList();    }    public void addOutput(OutputStream out)    {        outputArrayList.add(out);    }    public void removeOutput(OutputStream out)    {        outputArrayList.remove(out);    }    public void send(String s)    {        for (int i=0;i<outputArrayList.size();i++)        {            PrintWriter pw = new PrintWriter((OutputStream)outputArrayList.get(i));            pw.write(s);            pw.flush();        }    }}
?


线程那个部分代码写得比较搓,明白原理就行了……
//worldterminator原创,转载请注明此处
这样基本的通信功能就实现了,在接收的时候先判断一下发过来的是不是安全认证s.indexOf("<policy-file-request/>")>=0
如果是返回安全认证,就是那个safe字符串。
否则把发过来的信息广播出去。sender.send方法。
//worldterminator原创,转载请注明此处
要注意的是:
?while ( is.read(reader) != -1 )这一行
我一开始用的是BufferedReader readLine()方法读取的。总是莫名奇妙的出错,所以建议不要用BufferedReader,直接读取byte或者byte数组的方式比较好。再把byte[]转成string判断是否是FLASH发过来的安全认证。

如果出现安全沙箱错误,一般是安全认证没有返回,但是别的情况也有可能出现这个错误,比如服务器的socket关闭早了,或者服务器没有把socket流内的内容读取完毕就关闭了,都会导致这个错误。
所以socket读到不能再读,然后再关闭,这个地方需要注意。

还有一个用XMLSocket的方式通信的,和socket差不多,这里不多说了,安全认证也是一样的,比socket简单一些。

这样,就完成了基本的 FLASH与JAVA 通信。

//worldterminator原创,转载请注明此处

1 楼 恋曲2000 2010-09-26   学习了 谢谢lz

热点排行