2010-02-22 53 views
0

我一直试图在我的Flash客户端和java服务器之间建立连接几天,但遇到了套接字策略服务器的问题。Flash/AS2套接字策略文件问题

我已经在线阅读了很多信息(包括关于如何创建一个信息的Adobe指南),但除了在CS3中的“测试电影”选项之外,我仍无法获得它的连接。

客户端和服务器的来源相当长,所以我只会试着解释他们做了什么。

OK,所以基本上我收到<policy-file-request/>请求在我的Java服务器,然后我送“<cross-domain-policy><allow-access-from domain='*' to-ports='*' /></cross-domain-policy>”(试过无数其他的XML文件),其次是一个空字符(但保持连接打开,试图关闭它 - 仍然没有工作)。然而,看起来,在放弃之前,Flash客户端仍然继续尝试连接大约10秒钟。

我还在java服务器内部设置了一个迷你web服务器,它在发出http样式的请求时在同一个端口上提供一个网页,并且这似乎工作,所以它不能成为一个port-转发问题。

我也试过Adobe示例端口843服务器,但仍然无法工作。在firefox/safari中访问html文件时,我可以手动批准连接,并且它可以工作。

我读到一个套接字连接不需要crossdomain.xml,但已经做了一些尝试。

你认为我在这里可能会出错吗?

回答

0

以及我不使用java,但我可能会建议两个出发点。

首先,检查是否有双柯特斯(“)在域名和端口配置的IE replacemento一个问题:在VB中,我们可以使用CHR(34),这确实是看看:

sock.SendData "<cross-domain-policy><allow-access-from domain=" & Chr(34) & "*" & Chr(34) & "to-ports=" & Chr(34) & "50505" & Chr(34) & "/></cross-domain-policy>" & Chr(0) 

第二,跟踪我的应用程序,我发现Flash Player在接收到他的政策文件的答案后会“断开连接”并重新收回,因此顺序如下:

服务器接收到包含msg“policy-文件请求/“ 服务器响应策略文件 然后......它断开连接(!)(?) 然后重新连接(automaticaly)

诀窍是在VB中,我们应该关闭在sock_Close()事件中的插座,像这样的:

Private Sub sock_Close() 
sock.Close       ' has to be called 
sock.Listen       ' listen again 

末次

希望它能帮助。