众所周知Flash的功能比较强大,但是有两个功能到目前为止始终无法实现

是swf的点对点连接

是swf读写操作文件

别想了,靠Flash本身是不可能的,虽然有传说中的MMSave();等一些隐藏函数,但是毕竟这些未公开的函数了解的人并不多,用起来也不方便。

那么究竟有没有其他办法可以扶助实现呢?答案当然是肯定的。在这里我们需要请出当前最热的两门名副其实的编程语言C++/Java,靠他们来实现你要实现的功能吧。

在这里我用Java举例。

首先我们必须了解 AS如何让Java做事?对于双方来讲唯一应用性最高的途径就是Socket 了。

AS1->XMLSocket->send()->Java.Socket->InputStream

AS2->XMLSocket->send()->Java.Socket->InputStream

AS3->Socket->writh()->flush()->Java.Socket->InputStream

as1&2只支持以字符串形式发送socket,而as3支持真正意义上的流,在这里为了兼容和教学简单,我均以字符串形式来实现相互间的通信。

1->AS与Java最基本的通信

1.1 简单Java服务器

首先我们来做最简单的单线程Java服务器

import java.io.*;
import http://www.doczj.com/doc/d30918f3f61fb7360b4c65d1.html.*;
public class Server extends ServerSocket{
//服务端口号常量(as要求必须大于1024,小于65535)
private static final int SERVER_PORT = 10086;
//申明流的空间
private Socket client;
private BufferedReader in;
private PrintWriter out;
private String src;
//构造函数
public Server() throws IOException{
super(SERVER_PORT);
//监听连接,初始流在进来后读取前,和写入后发送前所存放的空间
Socket socket = accept();
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(),true);
//循环等待读取信息
while(true){
//读取行信息,注意是以换行符结束的
src = in.readLine();