日期:2014-05-17  浏览次数:20814 次

基于socket技术的多人聊天室 c# winform做为服务端 Flash做为客户端,出现的问题
小的在做一多人聊天室,服务端和客户端都采用socket,
环境:
1.服务端是一个winform应用程序,互责接收和处理来自客户端的消息
2.客户端用flash做界面,用socket与服务端通信,最终发布为chat.swf文件
3.chat.swf嵌入到网站中的a.html页面,用户通过a.html页面中的chat.swf来开始聊天过程。
4.客户端,服务端部署在同一台远程服务器上且在同一个文件夹下。

问题:发布后的chat.swf嵌入到a.html后,chat.swf无法与winform应用程序通信。踪踪flash端的socket.connect("xx.xx.xx.xx",8000)部分;发现报Error #2010的安全沙箱的异常信息。不知道怎么解决?请各路大侠指点,谢谢。



------解决方案--------------------
flash的客户端会连接服务器获取跨域策略文件crossmain.xml文件
你的服务器端在客户端请求crossmain.xml文件的时候要输出内容
这个我也是在反编译别人的网页游戏的时候发现的,我抓包发现他用的是UDP协议连接的是另外一个IP
XML code

<?xml version="1.0"?>
<cross-domain-policy>
  <allow-access-from domain="*" />
</cross-domain-policy>