我試圖評估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