我有一个ServerSocket侦听ServerSocketConnectEvent.CONNECT事件。在AS3中如何进行套接字连接
serverSocket.bind(80, "127.0.0.1");
serverSocket.addEventListener(ServerSocketConnectEvent.CONNECT, onConnect);
serverSocket.listen();
然后它监听ProgressEvent.SOCKET_DATA事件。
private function onConnect(event:ServerSocketConnectEvent):void
{
clientSocket = event.socket;
clientSocket.addEventListener(ProgressEvent.SOCKET_DATA, onClientSocketData);
}
private function onClientSocketData(event:ProgressEvent):void
{
var buffer:ByteArray = new ByteArray();
clientSocket.readBytes(buffer, 0, clientSocket.bytesAvailable);
...
然后我从我的客户端发送一条简单的消息“hello”。 这工作正常,当我从IDE运行我的客户端。 但是当我运行相同的客户从我的浏览器的SWF我在缓冲区得到这个消息:
""<policy-file-request/>""
我试图捕捉的代码是这样回应:
if(buffer.toString().search("policy-file-request" != -1))
{
var str:String = "<?xml version=\"1.0\"?><cross-domain-policy><allow-access-from domain=\"*\" to-ports=\"*\" /></cross-domain-policy>\0";
clientSocket.writeUTFBytes(str);
clientSocket.flush();
}
代码叫,但它不起作用。我如何建立连接?
请帮助:)
谢谢@RobertN :) 正如你可以从代码中看到的,我试图发送我的XML。但它不起作用。你能提供一些代码吗? –
对于开发工作,我只是使用Adobe的python flashpolicyd.py脚本进行生产,我们为端口843站起虚拟http服务器,并用策略文件回复任何请求。如果您使用基于Air的服务器(?)执行此操作,请尝试将\ 0终止符作为writeByte(0)发送。 – SushiHangover