Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170002
  • 博文数量: 25
  • 博客积分: 548
  • 博客等级: 中士
  • 技术积分: 229
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-11 18:48
文章分类

全部博文(25)

文章存档

2012年(2)

2011年(23)

分类: 嵌入式

2011-07-22 16:13:56

unity3.0版本后的webplayer加入了security sandbox特性,使用socket连接之前,会向默认端口843发送策略文件请求信息:,如果返回信息不正确或者端口不在允许范围内,socket连接失败并且报以下异常:
  1. System.Security.SecurityException: Unable to connect, as no valid crossdomain policy was found
解决以上问题需要进行两步处理:
第一步:
在客户端socket连接之前调用以下API函数 Security.PrefetchSocketPolicy(server,port)
第二步:
开启服务器之前运行sockpol.exe,位置为unity安装目录Unity\Editor\Data\Tools\SocketPolicyServer,作用是向客户端返回策略文件信息,运行时有三个命令:--all表示接受所有port范围,--range表示接收范围是4500-4550,可以在源代码中进行修改,--file表示读取本地文件,后面跟文件路径,可以自定义port范围,自定义文件格式如下:
  1. <?xml version="1.0"?>
  2. <cross-domain-policy>
  3.     <allow-access-from domain="*" to-ports="8000" />
  4. </cross-domain-policy>
经局域网测试,连接正常。
阅读(3079) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~