繁体   English   中英

如何将AMF格式的数据从Flex发送到Java套接字服务器?

[英]How to send data in AMF format from flex to java socket server?

我想知道如何使用AMF格式从我的flex AIR项目向使用Java编写的套接字发送数据。 使用writeUTFBytes()方法发送数据时出现CorruptedStreamException 有没有人遇到过类似的问题? 我仅在使用LCDS时也可以使用AMF吗?

private SimpleServer(int port)
{
    System.out.println(">> Starting SimpleServer on port " + port);
    try
    {
        socket      = new ServerSocket(port);
        incoming    = socket.accept();
        objectInputStream   = new ObjectInputStream(incoming.getInputStream());
        objectOutputStream = new ObjectOutputStream(incoming.getOutputStream());
        boolean done = false;
        while (!done)
        {
            Object obj = objectInputStream.readObject();
            System.out.println( obj.toString() );
            if(obj == null)
            {
                done = true;
                incoming.close();
            }
        }
    }
    catch (Exception e)
    {
        System.out.println(e);
    }
}

我的as3将数据发送到服务器的功能是

        private function onSendClick():void
        {
            var host:String = "10.87.118.8";
            var port:int = 9090;

            var socket:Socket = new Socket();

            trace("Connect");
            socket.connect(host, port);

            trace("write");
            socket.writeUTFBytes("HelloSocket");

            trace("flush");
            socket.flush();
        }

AMF代表操作消息格式。

该规范定义了如何在ActionScript客户端和外部系统之间传输数据。

因此,许多服务器端技术将AMF合并到其软件包中。 例如BlazeDS,GraniteDS,pyAMF,amfphp,...

因此,为回答您的问题,LCDS外部也不能使用AMF。 它只是一个“信封”,您可以用来发送消息(=数据)。

它甚至应该与套接字一起工作。 我相信有一个名为merapi的开源库可以使用此原理。

干杯

现在这是一个古老的问题,但是由于在ActionScript方面,您正在使用

socket.writeUTFBytes("HelloSocket");

在Java方面,将其更改为此,它将在没有AMF的情况下工作:

BufferedReader in = new BufferedReader (new InputStreamReader((clientSocket.getInputStream())));
String line = "";               
while( (line = in.readLine()) != null) {
    processMessage(line);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM