http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5612|回复: 2
打印 上一主题 下一主题

[官方动态] 有没有AMF3编码解码的类模块呢?

[复制链接]
跳转到指定楼层
楼主
发表于 2014-3-24 08:48:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RT!!


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
推荐
发表于 2014-3-24 09:06:19 | 只看该作者
http://flashaway.blog.163.com/blog/static/95624576201011102493765/
这个没写过百度了一下你看看

[Java] 纯文本查看 复制代码
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.HashMap;
 
import flex.messaging.io.SerializationContext;
import flex.messaging.io.amf.Amf3Input;
import flex.messaging.io.amf.Amf3Output;
 
public class AmfServer
{
public static void main(String args[])
{
   SerializationContext serializationContext=new SerializationContext();
   
   //序列化amf3对象
   Amf3Output amfout=new Amf3Output(serializationContext);
   
   //实现了一个输出流,其中的数据被写入一个 byte 数组。
   ByteArrayOutputStream byteoutStream=new ByteArrayOutputStream();
   
   //将byteoutStream产生的数组流导入到DataOutputStream流中
   DataOutputStream dataoutstream=new DataOutputStream(byteoutStream);
   
   //创建ServerSocket和Socket对象
   ServerSocket serverSocekt;
   Socket socket;
   
   // 设置流的编码格式为amf3
   amfout.setOutputStream(dataoutstream);
   
   //创建Map对象、Double对象数组
   HashMap map=new HashMap();
   map.put("Event", "人物移动");
   map.put("user", "闪刀浪子");
   map.put("x", 100);
   map.put("y", 100);  
   
   try {
    amfout.writeObject(map);//实际上是将map对象写入到dataoutstream流中
    dataoutstream.flush();//清空缓存
   } catch (IOException e) {
    e.printStackTrace();
   }
   
   //将ByteArrayOutputStream流中转化成字节数组
   byte[] messageBytes=byteoutStream.toByteArray();//amf3数据
   
   OutputStreamWriter osw;//使用amf3格式将写入流中的数据编码成字节
   BufferedWriter bwrite;//用来封装OutputStreamWriter,以提高效率
   
   try {
     
    System.out.println("输出数组长度"+messageBytes.length);   
    serverSocekt=new ServerSocket(1028);//开启服务器进程   
    System.out.println("服务器已经启动。。。。。。。");   
    socket=serverSocekt.accept();   
    if(socket.isConnected())
    {
     System.out.println(">>>>>>>>>>客户端已连接");
    } 
    //socket.
    osw=new OutputStreamWriter(socket.getOutputStream());//将字符流转化为字节流
    bwrite=new BufferedWriter(osw);//封装osw对象,提高写入的效率
    
    socket.getOutputStream().write(messageBytes);//向流中写入二进制数据 
    socket.getOutputStream().flush();
    socket.getOutputStream().close();
    
   } catch (FileNotFoundException e) {
    e.printStackTrace();
   }
   catch (IOException e) {
    e.printStackTrace();
   } 
}
}
 
上面的这个例子我们模拟了一个事件——人物移动,并把相关数据一并封装到了一个Object对象里面。
 
下面是客户端的代码(AmfSocket.fla),因为比较简单随意没有注释了。
 
var socket:Socket=new Socket();
socket.addEventListener(Event.CLOSE, closeHandler);
socket.addEventListener(Event.CONNECT, connectHandler);
socket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
socket.addEventListener(ProgressEvent.SOCKET_DATA, socketDataHandler);
socket.connect("localhost",1028);
var obj:Object=new Object();
 
addEventListener("recieved",recievedData);
function recievedData(evt:Event)
{
switch (obj.Event) {
   case "人物移动" :
    trace("把玩家:"+obj.user+" 移动到"+obj.x+","+obj.y);
    break;
   case "人物换装" :
    trace("人物换装");
    break;
   case "消息广播" :
    trace("系统信息");
    break;
   default :
    break;
}
 
};
 
function closeHandler(event:Event):void {
trace("连接关闭");
}
 
function connectHandler(event:Event):void {
trace("连接成功");
}
 
function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler信息: " + event);
}
 
function securityErrorHandler(event:SecurityErrorEvent):void {
trace("securityErrorHandler信息: " + event);
}
 
function socketDataHandler(event:ProgressEvent):void {
trace("接收数据");
obj=socket.readObject();
this.dispatchEvent(new Event("recieved"));
}
 
执行结果:
连接成功
接收数据
闪刀浪子移动到100,100
连接关闭

板凳
 楼主| 发表于 2014-3-24 14:34:56 | 只看该作者
站长苏飞 发表于 2014-3-24 09:06
http://flashaway.blog.163.com/blog/static/95624576201011102493765/
这个没写过百度了一下你看看

谢谢站长
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-5-2 12:15

© 2014-2021

快速回复 返回顶部 返回列表