0

几天来,我一直在尝试在我的 Flash 客户端和 Java 服务器之间建立连接,但在使用套接字策略服务器时遇到了问题。

我在网上阅读了很多信息(包括有关如何创建的 Adob​​e 指南),但除了 CS3 中的“测试电影”选项之外,我仍然无法连接它。

客户端和服务器的源代码很长,所以我将尝试解释它们的作用。

好的,所以基本上我在我的 java 服务器中收到了请求<policy-file-request/>,然后我发送“ <cross-domain-policy><allow-access-from domain='*' to-ports='*' /></cross-domain-policy>”(尝试了许多其他 xml 文件),后跟一个空字符(但保持连接打开,尝试关闭它 - 仍然没有工作)。然而,flash 客户端似乎仍然继续尝试连接大约 10 秒,然后才放弃。

我还在 java 服务器中设置了一个迷你 web 服务器,当发出 http 样式的请求时,它在同一端口上提供网页,这似乎工作,所以它不可能是端口转发问题。

我还尝试了 Adob​​e 示例端口 843 服务器,但仍然无法正常工作。在 firefox/safari 中访问 html 文件时,我可以手动批准连接,并且可以正常工作。

我读到 socket 连接不需要 crossdomain.xml,但仍然尝试过。

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

4

1 回答 1

0

好吧,我不使用 java,但我可能会建议两个起点。

首先,检查在域和端口配置上替换双引号(“)是否有问题。即:在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 播放器在收到他的策略文件的答案后会“断开”并重新连接。所以顺序是这样的:

服务器接收带有 msg "policy-file-request/" 的请求 服务器响应策略文件然后......它断开连接(!)(?)然后它再次连接(自动)

诀窍是在 VB 中,我们应该在 sock_Close() 事件上关闭套接字,例如:

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

结束子

希望能帮助到你。

于 2010-11-28T07:45:19.747 回答