1.2 AS1 与 Java 通信
Action Script 1
var SERVER_PORT = 10086; var SERVER_IP = "127.0.0.1"; var conn = new XMLSocket(); conn.connect(SERVER_IP,SERVER_PORT); conn.onConnect = socketConnect; conn.onData = socketData; function socketConnect(success){ trace("connect"+success); if(success){ this.send("hello world\r"); } } function socketData(src){ trace(src); }
接触了相对生疏的Java后现在回到AS,感觉就是爽,嘿嘿 前三行定义了三个变量,由于as1没有强制类型,所以千万别加上类型修饰符啊,反而会出错,请注意。 conn.connect(SERVER_IP,SERVER_PORT);连接到socket的服务器。 如果连接成功 Java中的 ServerSocket.accept();会返回一个对象,并向下执行。 as的连接成功呢则触发了socketConnect(success)的事件,并且把true的参数传如函数。当然连不到就是false了。 成功后就会发送一个"hello world\r"的字符串,"\r"是回车符,因为Java里我用的是readLine();所以需要看到行的结束。 当有数据进来的时候呢就会出发socketData函数了,这里把信息输出。 好了用as1的朋友到此已经成功与Java程序通讯了。
1.3 AS2 与 Java 通信
Action Script 2
var SERVER_PORT:Number = 10086; var SERVER_IP:String = "127.0.0.1"; var conn:XMLSocket = new XMLSocket(); conn.connect(SERVER_IP,SERVER_PORT); conn.onConnect = socketConnect; conn.onData = socketData; function socketConnect(success:Boolean){ trace("connect"+success); if(success){ this.send("hello world\r"); } } function socketData(src:String){ trace(src); }
以上是fla版,和as1唯一的区别就是有类型定义,这样做无论是时间执行效率还是空间执行效率都会有明显提高。 接下去看看真正的Action Script 2代码,将以下代码保存成Socket.as文件,和fla文件放在一起。
class Socket extends XMLSocket{ public function Socket(){ super(); } public function onConnect(success:Boolean){ trace("connect"+success); if (success){ this.send("hello world\r"); } } public function onData(src:String){ trace(src); } }
fla里在帧上写
var SERVER_PORT:Number = 10086; var SERVER_IP:String = "127.0.0.1"; var conn:Socket = new Socket(); conn.connect(SERVER_IP,SERVER_PORT);
这才是真正的as2,当然你可以更好的修改Socket,让他符合Server的要求,比如在类里加上一个常量,并写入符合Server要求的方法。
public var msg:String = ""; public function write(src){ msg += src; } public function flush(){ this.send(msg+"\r"); msg = ""; }
这样在fla里发送的方式就改为
conn.write("hello world"); conn.flush();
这样是不是又规范又符合Java的要求了呢?我只是举是一个简单例子,你可以按要求自己再修改。
出处:蓝色理想
责任编辑:bluehearts
上一页 Flash P2P 通信技巧(AS-Java-AS) [1] 下一页 Flash P2P 通信技巧(AS-Java-AS) [3]
◎进入论坛RIA设计与应用版块参加讨论
|