Flash套接字策略文件

时间:2012-02-09 04:51:06

标签: flash sockets cross-domain-policy

我一直在使用Flash套接字并在C / Linux中设置服务器。我无法通过策略文件请求部分。我已经在SO上看过其他帖子并检查了Adobe的网站,但我仍然遇到了一些问题。

在我接受连接后,在我的服务器上,我得到<policy-file-request/>.我正在使用以下XML策略文件。

<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>

我只是将整个文件放入一个char数组,然后通过我收到请求的同一个端口写出来(我不是使用843而是自定义端口)。我已经读过它假设以零字节结束(这是指NULL还是'\ 0'?)。我似乎无法超越这一部分。

在我的客户端,我有一个套接字事件监听器,如

sock.addEventListener(ProgressEvent.SOCKET_DATA, sockFunc);

但事件永远不会解雇。

为了解决这个问题,Chrome似乎不喜欢我使用Flash调试,当我使用IE或FF时,我的服务器只是在recv上阻塞而永远不会得到<policy-file-request/>。我猜测在IE和FF上尝试端口843然后放弃?尝试通过自定义端口发送策略文件是不好的做法吗?

真的很感激任何帮助。我真的被困在这里:(

编辑: 通过向末尾添加零字节,我的服务器现在接受连接,读取策略请求,在套接字上写入策略文件,然后再次接受并在recv上阻塞。接受应该是阻止,因为我现在只想连接一个客户端。在正确接收策略文件后,客户端是否假设要重新连接新的文件描述符?在客户端我正试图用

写入服务器
sock.writeUTFBytes("Hello");
sock.flush();

但是,由于recv阻塞,它显然永远不会在那里。

0 个答案:

没有答案