看流星社区

 找回密码
 注册账号
查看: 2542|回复: 0

AMF3简单封装用例

[复制链接]

该用户从未签到

发表于 2013-5-14 08:50:38 | 显示全部楼层 |阅读模式
import java.io.*;
import java.net.*;
import flex.messaging.io.SerializationContext;
import flex.messaging.io.amf.Amf3Output;
import flex.messaging.io.amf.Amf3Input;

\**
* @author じ☆ve弦

*\
public class AMF3 {

private SerializationContext sc = null;

private Amf3Output amfout = null;

private Amf3Input amfin = null;

public AMF3() {
  
  //System.out.println("创建AMF3数据处理对象");
  
  sc = new SerializationContext();
}


public void sendAmfData(Object objout,Socket socket){
  
  //System.out.println("AMF3_发送数据对象");
  
  if(sc != null){
   
   if(amfout == null){
   
    amfout = new Amf3Output(sc);
   
   }
  }
  
  ByteArrayOutputStream baos = new ByteArrayOutputStream();
  
  DataOutputStream dos = new DataOutputStream(baos);
  
  amfout.setOutputStream(dos);
  
  try {
   
   amfout.writeObject(objout);
   amfout.flush();
   
  } catch (IOException e) {
   
   System.out.println("异常:服务器写入错误[OBJ]!");
   
  }
  
  byte[] buf = baos.toByteArray();
  
  try {
   
   OutputStream os = socket.getOutputStream();
   
   os.write(buf);
   
   
  } catch (IOException e) {
   
   System.out.println("异常:服务器写入错误[BUF]!");
  }
}


public Object receiveAmfData(Socket socket){
  
  //System.out.println("AMF3_接收数据对象");
  
  if(sc != null){
   
   if(amfin == null){
   
    amfin = new Amf3Input(sc);
   
   }
  }
  
  byte[] buf = new byte[1024];
  
  ByteArrayInputStream bais = new ByteArrayInputStream(buf);
  
  DataInputStream dis = new DataInputStream(bais);
  
  amfin.setInputStream(dis);
  
  try {
   
   InputStream is = socket.getInputStream();
   
   is.read(buf);
   
  } catch (IOException e) {
   
   System.out.println("异常:服务器读取错误[BUF]!");
   
  }
  
  Object objin = null;
  
  try {
   
   objin = amfin.readObject();
   
  } catch (ClassNotFoundException e) {
   
   e.printStackTrace();
   
  } catch (IOException e) {
   
   System.out.println("异常:服务器读取错误[OBJ]!");
   
  }
  
  return objin;
}

}

发送数据对象的方法:sendAmfData(Object objout,Socket socket):void
接收数据对象的方法:receiveAmfData(Socket socket):Object
点击按钮快速添加回复内容: 支持 高兴 激动 给力 加油 苦寻 生气 回帖 路过 感恩
您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

小黑屋|手机版|Archiver|看流星社区 |网站地图

GMT+8, 2024-4-20 15:37

Powered by Kanliuxing X3.4

© 2010-2019 kanliuxing.com

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