设为首页 加入收藏

TOP

FLASH与服务器通讯 (JAVA)(二)
2014-11-24 03:06:15 来源: 作者: 【 】 浏览:4
Tags:FLASH 服务器 通讯 JAVA
d run()
{
try
{
InputStream is = socket.getInputStream();
byte [] reader = new byte [BYTE_ARRAY_MAX_LEN];
BufferedWriter bw = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream()));
OutputStream out = socket.getOutputStream();
sender.addOutput(out);
int ch=0;
String s;
while ( is.read(reader) != -1 )
{
//System.out.println("ch - "+ch);
s = new String(reader);
System.out.println("reader len:"+reader.length);
System.out.println(s);

if ( s!=null && s.indexOf("")>=0 )//安全策略
{
for ( int i=0;i {
System.out.println(i+" "+(int)s.charAt(i));
}


bw.write(safe,0,safe.length());
bw.flush();
//bw.close();
System.out.println(safe);
}
else
{
synchronized(sender)
{
sender.send(s);
}
}
reader = new byte [BYTE_ARRAY_MAX_LEN];
}
bw.close();
synchronized (sender)
{
sender.removeOutput(out);
}
}
catch (Exception ex)
{
System.out.println("error in receiver");
ex.printStackTrace();
}
try
{
socket.close();
System.out.println(socket.getInetAddress()+" disconnected");
} catch (IOException ex1) {
System.out.println("socket close error");
Logger.getLogger(Receiver.class.getName()).log(Level.SEVERE, null, ex1);
}

}
}


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 {
PrintWriter pw = new PrintWriter((OutputStream)outputArrayList.get(i));
pw.write(s);
pw.flush();
}
}


}


线程那个部分代码写得比较搓,明白原理就行了……


这样基本的通信功能就实现了,在接收的时候先判定一下发过来的是不是安全认证s.indexOf("")>=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 通信。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java 实现权限管理的两种方式 下一篇MPI在Linux下的配置总结

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·Announcing October (2025-12-24 15:18:16)
·MySQL有什么推荐的学 (2025-12-24 15:18:13)
·到底应该用MySQL还是 (2025-12-24 15:18:11)
·进入Linux世界大门的 (2025-12-24 14:51:47)
·Download Linux | Li (2025-12-24 14:51:44)