[英]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.