1

私は自分のマシンにFMS3.5をインストールし、次のようにmain.ascを使用して新しいアプリケーションを作成しました。

    application.onAppStart = function()
{
    /* Allow debugging */
    this.allowDebug = true;
}

//Client is connected
application.onConnect = function( client )
{

    //Accept the connection
    application.acceptConnection( client );

    client.allo = function(o) {
        trace("test : " + o ) ; 
        trace("length : " + o.length ) ; 
        trace("objectEncoding : " + o.objectEncoding ) ; 
        return o ;
    }

}

//Client disconnected
application.onDisconnect = function( client )
{
    //Trace on the FMS Application console
    trace( client+" is disconnected" );
}

このコードは、flexアプリケーションで呼び出す「allo」という名前の関数を準備し、応答として同じbyteArrayを返します。

フレックスコードは次のとおりです。

var anotherArray:ByteArray = new ByteArray();
                anotherArray.objectEncoding = ObjectEncoding.AMF3;
                anotherArray.writeObject(new String("foo"));
                nconn.call(func, echoResponder, anotherArray);

その結果、長さ、エンコーディング、エンディアン、および位置のパラメーターのみを含む空のByteArrayを取得します。また、tcpdumpトレースは、ByteArrayが空であることを示しています。

だから、送信されるのはポインタだけなのか、それとも何かを誤って設定したのだろうか。

さらに調査したり、これを解決したりする方法を知っていますか?

助けてくれてありがとう、


MP

4

1 に答える 1

0

私はあなたのコードを試しました。

送信...

var bytes:ByteArray = new ByteArray();                      
bytes.objectEncoding = ObjectEncoding.AMF3;                 
bytes.writeObject(new String("foo"));                       
nc.call("allo", new Responder(_onResult, _onStatus), bytes);

...そして受け取り...

private function _onResult(result:*):void        
{
    var bytes:ByteArray = ByteArray(result);     
    var str:String = String(bytes.readObject()); 
    trace(str);                                  
}

痕跡foo

あなたのコードは大丈夫だと思います。唯一の違いは、FMS 4 を使用していることです。

于 2011-05-12T22:52:52.377 に答える