我试图评估Flex是否可以访问二进制套接字。似乎有一个类调用Socket(flex.net包)。要求是Flex将连接到服务器提供二进制数据。然后它将订阅数据并接收它将解释并显示为图表的订阅源。我从来没有与Flex合作过,我的经验在于Java,所以对我来说一切都是新的。所以我试图快速设置一些简单的东西。 Java服务器期望以下内容:Flex中的二进制套接字和策略文件
DataInputStream in = .....
byte cmd = in.readByte();
int size = in.readByte();
byte[] buf = new byte[size];
in.readFully(buf);
... do some stuff and send binary data in something like
out.writeByte(1);
out.writeInt(10000);
... etc...
Flex,需要连接到本地主机:6666完成握手并读取数据。我有这样的事情:
try {
var socket:Socket = new Socket();
socket.connect('192.168.110.1', 9999);
Alert.show('Connected.');
socket.writeByte(108); // 'l'
socket.writeByte(115); // 's'
socket.writeByte(4);
socket.writeMultiByte('HHHH', 'ISO-8859-1');
socket.flush();
} catch (err:Error) {
Alert.show(err.message + ": " + err.toString());
}
首先,Flex做了<policy-file-request/>
。我修改了服务器以回应:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="192.168.110.1" to-ports="*" />
</cross-domain-policy>
之后 - EOFException发生在服务器上,就是这样。
所以问题是,我接触到Flex的整个流数据问题是错误的吗?我是否发送政策文件错误?不幸的是,我似乎无法找到一个很好的例子来说明如何去做。在我看来,Flex可以执行二进制Client-Server应用程序,但我个人缺乏一些基本知识。
我在IntelliJ IDEA IDE中使用Flex 3.5。
任何帮助表示赞赏。
谢谢!
您可以在使用Security.loadPolicyFile方法加载策略文件时指定端口。我在这里写了一篇文章http://cornelcreanga.com/2008/11/bringing-data-into-flex-applications-introduction/ – 2010-05-17 18:28:42
谢谢!这工作。它连接好。现在我要弄清楚如何在Flex中读取异步套接字中的数据。 Flex有免费的实时消息协议吗?我看到他们提供了一个商业解决方案,但我可以以某种方式免费做到这一点吗? – Daniil 2010-05-17 19:08:56