逍遥公子 发表于 2013-5-14 08:50:38

AMF3简单封装用例

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("异常:服务器写入错误!");
   
}

byte[] buf = baos.toByteArray();

try {
   
   OutputStream os = socket.getOutputStream();
   
   os.write(buf);
   
   
} catch (IOException e) {
   
   System.out.println("异常:服务器写入错误!");
}
}


public Object receiveAmfData(Socket socket){

//System.out.println("AMF3_接收数据对象");

if(sc != null){
   
   if(amfin == null){
   
    amfin = new Amf3Input(sc);
   
   }
}

byte[] buf = new byte;

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("异常:服务器读取错误!");
   
}

Object objin = null;

try {
   
   objin = amfin.readObject();
   
} catch (ClassNotFoundException e) {
   
   e.printStackTrace();
   
} catch (IOException e) {
   
   System.out.println("异常:服务器读取错误!");
   
}

return objin;
}

}

发送数据对象的方法:sendAmfData(Object objout,Socket socket):void
接收数据对象的方法:receiveAmfData(Socket socket):Object
页: [1]
查看完整版本: AMF3简单封装用例