我有一个用Python编写的服务器,我试图通过Flash的XMLSocket连接它。我确信这台服务器工作正常,因为我已成功使用它与多个非Flash客户端应用程序。目前,我只想使用驻留在本地磁盘上的SWF连接到远程服务器。据我所知,这意味着我不需要安全策略文件,因为SWF不在另一个域中。我还确认文件的安全沙箱属性设置为local-trusted,因此SWF应该能够连接到服务器并从中检索数据。这是AS文件中的重要代码:
var xmlSocket:XMLSocket = new XMLSocket();
public function MainLogic() {
xmlSocket.addEventListener(DataEvent.DATA, onDataReceived);
xmlSocket.connect('XXX.XXX.XXX.XXX', XXXX);
}
public function onDataReceived(event:DataEvent):void {
helloText.text = 'data received'
}
服务器被编程为在建立连接后立即发送字符串'hello \ 0'。但是如果这成功发生,那么动态文本框中的默认文本应该替换为字符串'data received',这不会发生。即使SWF文件是本地的,我仍然需要策略文件吗?
答案 0 :(得分:1)
确保为所有潜在的error events添加侦听器,这将使调试中出现大量猜测。 我建议更改example from the livedocs来测试一下。他们设置了这些活动:
xmlSocket.addEventListener(Event.CLOSE, closeHandler);
xmlSocket.addEventListener(Event.CONNECT, connectHandler);
xmlSocket.addEventListener(DataEvent.DATA, dataHandler);
xmlSocket.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
xmlSocket.addEventListener(ProgressEvent.PROGRESS, progressHandler);
xmlSocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
答案 1 :(得分:0)
我会选择grapefrukt的策略,看看你得到了什么错误。
我的猜测是这是一个安全错误。我认为在尝试通过套接字连接时,您总是需要一个策略文件服务器。
答案 2 :(得分:0)
我使用未注册的帐户发布此问题,因此我无法选择最佳答案或评论,但基本上添加事件处理程序工作得很好。它确实是一个安全错误,所以策略文件可能是问题。但是,我发现一个更简单的解决方案是只修改Flash播放器上的设置,以便始终允许某些文件夹或文件的网络访问。我使用此网站修改了设置:http://www.macromedia.com/support/documentation/en/flashplayer/help/settings_manager04.html