小编Syl*_*ain的帖子

使用flex套接字读取AMF对象

我目前正在尝试使用套接字和AMF序列化对象在java和flex之间进行通信.

在java方面,我使用BlazeDS的Amf3Input和Amf3Output(flex-messaging-common.jar和flex-messaging-core.jar).

连接已正确建立,如果我尝试将对象从flex发送到java,我可以轻松读取对象:

FLEX方面:

protected function button2_clickHandler(event:MouseEvent):void
{
    var tmp:FlexAck = new FlexAck;
    tmp.id="123456789123456789123456789";
    tmp.name="A";
    tmp.source="Aaaaaa";
    tmp.ackGroup=false;
    s.writeObject(tmp);
    s.flush();
}
Run Code Online (Sandbox Code Playgroud)

JAVA方面:

ServerSocket servSoc = new ServerSocket(8888);
Socket s = servSoc.accept();
Amf3Output amf3Output = new Amf3Output(SerializationContext.getSerializationContext());
amf3Output.setOutputStream(s.getOutputStream());
Amf3Input amf3Input = new Amf3Input(SerializationContext.getSerializationContext());
amf3Input.setInputStream(s.getInputStream());
while(true)
{
    try
    {
      Object obj = amf3Input.readObject();
      if(obj!=null){
          if (obj instanceof AckOrder){
          System.out.println(((AckOrder)obj).getId());
      }
      }                 
}
catch (Exception e)
{
      e.printStackTrace();
  break;
}
  }
  amf3Output.close();
  amf3Input.close();
  servSoc.close();
Run Code Online (Sandbox Code Playgroud)

通过这种方式它可以很好地工作,但问题是读取从java端发送的对象.

我在java中使用的代码是:

for(int i=0;i<10;i++){
    ack = new AckOrder(i,"A","B", true);
    amf3Output.writeObject(ack); …
Run Code Online (Sandbox Code Playgroud)

java sockets apache-flex amf

5
推荐指数
1
解决办法
3125
查看次数

标签 统计

amf ×1

apache-flex ×1

java ×1

sockets ×1