Unity3d Web Player 的server端联网配置

http://blog.csdn.net/dyllove98/article/details/9501695

新游戏出了第一个能跑完流程的版本,不得不佩服Unity3D强大的功力,PC、MAC OS、Linux、IOS、Android、web player,前天刚发布的unity3d 4.2版本还支持WINDOWS PHONE、Black Barry这些平台统统一键打包,so easy!不过在打包部署Web Player时,在联网方面出现了一点麻烦,算是顺风顺水过程当中的一个小插曲吧!所以又可以针对Unity3d Web Player 的server端联网配置写一随笔咯。

以SmartFoxServer2X官方的Unity3d Example ”tris“为例,部署好服务器之后,在Unity端跑游戏肯定没问题,成功连接。但是当切换到Web Player打包方式,并且确定你连接的不是本机服务器,即--服务器端地址不为“LocalHost”或“127.0.0.1”时,会发现一个很“有趣”的现象(其实一点都不有趣啦,困扰哥好久-_-!~)--死活连接不上服务器了,不论是直接在Unity3D Editor中跑游戏还是打包好Web Player程序在浏览器中跑。其中主要的错误描述为:

[SFS DEBUG] TCPSocketLayer: General exception on connection: Unable to connect, as no valid crossdomain policy was found   at System.Net.Sockets.Socket.Connect_internal (IntPtr sock, System.Net.SocketAddress sa, System.Int32& error, Boolean requireSocketPolicyFile) [0x00000] in <filename unknown>:0
  at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP, Boolean requireSocketPolicy) [0x00000] in <filename unknown>:0
  at System.Net.Sockets.Socket.Connect (System.Net.EndPoint remoteEP) [0x00000] in <filename unknown>:0
  at System.Net.Sockets.Socket.Connect (System.Net.IPAddress address, Int32 port) [0x00000] in <filename unknown>:0
  at Sfs2X.Core.Sockets.TCPSocketLayer.ConnectThread () [0x00000] in <filename unknown>:0

经过摸索查阅资料后发现,这都是Unity WebPlayer Security SandBox机制的问题。Unity3D官方的文档中解释这种现象:This security restrictions apply only to the webplayer, and to the editor when the active build target is WebPlayer. 和我遇到的现象描述相符。说白了就是Unity3d为Web Player平台搞了一个security SandBox机制,Only在Web Player的安全机制中,我们在使用Socket时需要服务器配置一个服务安全策略。因为没有在这方面进行任何处理,所以Security SandBox阻止了程序的Socket连接,造成了以上的现象。OK,问题找到了。

解决办法是:Unity提供了一个“sockpol.exe”这么一个工具,在“...\Unity\Editor\Data\Tools\SocketPolicyServer“路径下有sockpol.exe和它的源码。如果你的服务器端是Windows平台的话,直接Copy一个sockpol.exe到服务器端,在CMD中执行

sockpol.exe --all

即可为服务器端配置好Security SandBox安全策略。

说到这了,如果不认真读Unity3D官方关于Security SandBox的文档是不是还是有点云里雾里的,不禁要问了:这个sockpol.exe是什么神奇的东西呢?

OK,我们可以不读官方文档,来看一看sockpol.exe的源代码吧,刚才说了在“...\Unity\Editor\Data\Tools\SocketPolicyServer“路径下有sockpol.exe的源码,从源码中很容易就分析出原来sockpol.exe干的活就是监听Web Player平台获取Security SandBox安全策略时需要连接服务器端的843端口,监听到843端口有请求时,发送给请求的客户端一个crossdomain.xml配置,内容为标准的crossdomain.xml文件格式:

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

这样客户端就能获取到Security SandBox安全策略并进行网络活动了。其中,执行sockpol.exe的参数--all的意义就是设置服务器的Security SandBox安全策略为允许任何IP访问服务器的任何端口。

知道了这个原理,Linux服务器端就很容易能得出解决方案了,我们利用Linux的NetCat(NC)工具写一个脚本,以达到同样的目的。

首先,确认Linux服务器安装了NetCat,在SHELL中键入’NetCat‘或者‘NC’测试一下你的系统中有没有安装这个工具。如果没有反应,很简单,安装一个。

#如果你用RedLinux或者RL系的Linux:
sudo yum install nc
#如果你用Ubuntu\Debian之类Linux:
sudo apt-get install nc

安装NC后,写一个脚本:

#!/bin/sh
while true; do echo ‘<?xml version="1.0"?>
<cross-domain-policy>
<allow-access-from domain="*" to-ports="1-65536"/>
</cross-domain-policy>‘ | nc -l 843; done

保存为serverPolicy.sh

别忘了拿到脚本权限

sudo chmod 755 serverPolicy.sh

直接运行脚本:

[csharp] view plaincopyprint?

  1. sudo ./serverPolicy.sh

如果没有报错的话,OK,成功为服务器端设置了Unity3D Web Player平台的Security SandBox安全策略。接下来做的就是测试咯!

对了,直接跑这个脚本的话会很麻烦,因为这时脚本还依赖于SHELL,当我们断开SHELL或者要在SHELL做其他活动时,脚本会停止运行。让脚本在后台运行的方法:

sudo nohup ./serverPolicy.sh &

OK,enjoy!

时间: 2024-10-14 04:06:38

Unity3d Web Player 的server端联网配置的相关文章

Mvc4单点登录之二 Cas server端配置

上一篇博客Mvc4单点登录之一Cas简单介绍简单的介绍了cas的工作原理!这篇文章介绍一下Cas Server端的配置. 首先要说明Cas server 是一个java程序,所以首先要确定你的电脑上安装了JDK, 并且安装了Tomcat 服务器,如果不会装的话,那么可以从网上查一下资料,一把一把的!例如,我将tomcat安装在了E:\apache-tomcat-7.0.52. cas的下载地址 cas 客户端:  http://download.csdn.net/detail/zhanghong

Zabbix(一) : 简介以及Server端安装

一.什么是Zabbix? zabbix由AlexeiVladishev首先开发,目前在维护的是Zabbix SIA.ZABBIX是一个企业级的开源分布式监控解决方案. zabbix为监控网络和服务器的健康和完整提供了很多参数.使用一个灵活的通知机制,允许用户配置基于email的报警,几乎支持所有的事件.这可以快速的反应服务器的问题.zabbix基于存储的数据提供了极好的报告和数据可视化特性.这使得zabbix容量很好的规划.zabbix支持轮循和捕获.所有zabbix的报告和数据以及配置参数,都

实战Nagios NSCA方式监控Linux系统资源使用情况 -- Nagios配置篇 -- Nagios Server端

关于nrpe的方式网上已经有很多很好的总结,我现在说说在我们系统中如何是用NSCA方式来获取我们需要的被监控节点的资源使用情况信息. 先讲讲Nagios Server端的基本配置: 1. nagios web gui 访问配置,系统中使用的是nagios core中推荐的配置方式,通过apache httpd访问nagios web,安装nagios的时候会自动寻找系统中安装的httpd,把nagios的httpd文件放到httpd的conf.d目录下,这样,只要生成一次nagios web访问

Zabbix(一):server,agent端 安装配置及主机,监控项,触发器,动作,媒介配置步骤

Zabbix(一):server端配置.agent端配置及创建主机组.主机.Application.Item.Trigger步骤详解 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案. zabbix能监视各种网络参数,保证服务器系统的安全运营:并提供柔软的通知机制以让系统管理员快速定位/解决存在的各种问题.  Zabbix的逻辑组件: - 主机(host):被监控的网络设备,通常可以使用IP或DNS名称来指定: - 主机组(hostgroup):主机的逻

同一台router上同时配置DMVPN Hub端和EasyVPN Server端

一.你是否熟悉Site-toSite IPSec配置,如果熟悉请跳下一步. 1.绿色序号10是本地排序,越小越优先.通常选3des.MD5.pre-share.group 2.加上sa时间是五元组 2.紫色key是要和对端IPSec配置一致的,IP地址是对端设备 3.传输集是要体现在加密图(crypto map)里面的.三元组:加密.认证和隧道 模式要选择隧道(tunnel)不要选AH,AH无法穿越NAT +.配置VPN感兴趣流 4.绿色序号10是本地排序,一个接口只能应用一个加密图(crypt

Drcom账户管理Server端解说

https://www.github.com/xiyouMc 首先今天要讲的是针对Drcom查询账户URL的解析和抓取数据.    Drcom是大学生宿舍上网普遍使用的联网client,然而对于自己账号的信息查询和改动password等都没有提供一个合理的方式去解决,因此小弟尝试去编写实现移动端的 app以方便大学生针对自己drcom账户的管理. 架构由来和设计 刚開始我是想直接基于某公司开发的b/s架构去实现client,然而当我去了解该B/S架构的时候才发现去实现C和B/S的架构不合理.为什

Zabbix实战-简易教程(4)--Server端安装

zabbix server安装 在数据库安装完成后,接着开始安装server端了. 3.2.1 安装rpm源 Zabbix 2.2 for RHEL5, Oracle Linux 5, CentOS 5: #rpm -ivh http://repo.zabbix.com/zabbix/2.2/rhel/5/x86_64/zabbix-release-2.2-1.el5.noarch.rpm Zabbix 2.2 for RHEL6, Oracle Linux 6, CentOS 6: #rpm

zabbix 监控--阿里云主机 (server端)

公司一直没有监控,我觉得监控在运维中是至关重要的,常说的防范于未然即使如此,那么衡量一个监控好坏,也就是监控有效性,最终避免故障的发生,才是硬道理:结果导向 一.系统信息 [[email protected] ~]# cat /etc/redhat-release  CentOS release 6.8 (Final) [[email protected] ~]# uname -r 2.6.32-642.el6.x86_64 二.软件版本 [[email protected] ~]# zabbi

CentOS 6.5 安装部署zabbix(Server端篇)

Linux下常用的系统监控软件有Nagios.Cacti.Zabbix.Monit等,这些开源的软件,可以帮助我们更好的管理机器,在第一时间内发现,并警告系统维护人员.    今天开始研究下Zabbix,使用Zabbix的目的,是为了能够更好的监控mysql数据库服务器,并且能够生成图形报表,虽然Nagios也能够生成图形报表,但没有Zabbix这么强大. 首先,我们先来介绍下Zabblx:一.Zabbix简介 zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解