gpt4 book ai didi

java - AS3 无法从 Java 发送的套接字中解码 AMF3 对象

转载 作者:搜寻专家 更新时间:2023-11-01 03:28:39 25 4
gpt4 key购买 nike

我有一个 java 套接字服务器,它在连接时向 Flash 客户端发送一个 Animal 对象。对象是这样发送的:

Amf3Output amf3Output = new Amf3Output(SerializationContext.getSerializationContext());
amf3Output.setOutputStream(userSocket.getOutputStream());
amf3Output.writeObject(animal);

flash端的代码是:

var object:Object = socket.readObject();
trace(object);
trace(object as Animal);

然而,当第二条轨迹给我一个null

我检查过java发出31个字节,Flash接收31个字节。

我认为可能是我的 Java 和 AS3 类不符合某些 AMF 要求。

Java 类:

package main;

public class Animal {

public String name;
public int age;
}

AS3 类:

package  
{

[Bindable]
[RemoteClass(alias="main.Animal")]
public class Animal
{
public var name:String;
public var age:int;

}

}

最佳答案

我不熟悉 Java 和适用于它的 AMF 序列化器/反序列化器,但闪存确实支持通过套接字发送类型化对象,如果发送正确的数据,它可以正常工作。下面是 ruby​​ 中的套接字服务器与 Flash 应用程序通信的示例。我正在使用 RocketAMF 在连接后通过套接字将 AMF3 对象发送到客户端。

SocketTest.as:

package {
import flash.display.Sprite;
import flash.net.registerClassAlias;
import org.rackAMF.*;
import flash.net.Socket;
import flash.events.*;

public class SocketTest extends Sprite {
private var socket:Socket;

public function SocketTest() {
registerClassAlias('Animal', Animal);

socket = new Socket();
socket.addEventListener(ProgressEvent.SOCKET_DATA, onResponse);
socket.connect("localhost", 8081);
}

private function onResponse(e:ProgressEvent):void {
var animal:Animal = socket.readObject() as Animal;
trace(Object(animal).constructor); // [trace] [class Animal]
trace(animal.name); // [trace] Zebra
trace(animal.age); // [trace] 5
}
}
}

class Animal {
public var name:String;
public var age:int;
}

socket_server.rb:

require 'rubygems'
require 'socket'
require 'rocketamf'

class Animal
attr_accessor :name, :age
end

# Map "Animal" in ruby to "Animal" in flash
RocketAMF::ClassMapper.define do |m|
m.map :as => 'Animal', :ruby => 'Animal'
end

server = TCPServer.open(8081)
loop {
client = server.accept

animal = Animal.new
animal.name = "Zebra"
animal.age = 5
client.write RocketAMF.serialize(animal, 3)

client.close
}

关于java - AS3 无法从 Java 发送的套接字中解码 AMF3 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6571377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com