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();
}
}
}
?
线程那个部分代码写得比较搓,明白原理就行了……
这样基本的通信功能就实现了,在接收的时候先判定一下发过来的是不是安全认证s.indexOf("<policy-file-request/>")>=0
假如是返回安全认证,就是那个safe字符串。
否则把发过来的信息广播出去。sender.send方法。
要注重的是:
?while ( is.read(reader) != -1 )这一行
我一开始用的是BufferedReader readLine()方法读取的。总是莫名奇妙的出错,所以建议不要用BufferedReader,直接读取byte或者byte数组的方式比较好。再把byte[]转成string判定是否是FLASH发过来的安全认证。
假如出现安全沙箱错误,一般是安全认证没有返回,但是别的情况也有可能出现这个错误,比如服务器的socket关闭早了,或者服务器没有把socket流内的内容读取完毕就关闭了,都会导致这个错误。
所以socket读到不能再读,然后再关闭,这个地方需要注重。
还有一个用XMLSocket的方式通信的,和socket差不多,这里不多说了,安全认证也是一样的,比socket简单一些。
这样,就完成了基本的 FLASH与JAVA 通信。