Unity3d webplayer连接Sokcet服务器

来源:互联网 发布:hiphop服装品牌知乎 编辑:程序博客网 时间:2024/05/16 11:52
  由于Unity3d中的webplayer有一种security sandbox的特性,他在连接服务器时需要先连接一个843(默认)的端口并得到一个通信策略,不过我在服务器上监听了这个端口,还是出错(主要是不知道如何返回那个策略),总是会提示这样的一个错误: Unable to connect, as no valid crossdomain policy was found
(没有发现有效的通信策略)。
    而如果用unity自带的network和networkview来写服务器的话,则没有这个方面的限制。不过由于本人刚学unity不久,用network写服务器虽然可以建立连接,不过服务器与客户端之间的交互信息不知道该怎么解决,只找到一个networkview.RPC这个方法可以用来发送信息,不过接受信息的就没有找到了。如果有知道的,可以留言说下,万分感谢!
    网上找了几天的资料,基本上都是国外的资料,而我的英文实在是不怎么样,所以总是看的一知半解,郁闷的要死。当时只知道要写一个crossdomain.xml的文件,然后把该文件放在网站服务器的根目录下,最后在客户端连接服务器之前加上下面这句代码就可以了。
Security.PrefetchSocketPolicy(Ip,Port);
不过不知道是不是因为我是在自己的电脑上同时进行服务器和客户端的测试,所以我按上面的做还是没有成功,依然是同样的错误!Unity3d <wbr>webplayer连接Sokcet服务器
    最后在这个网站(http://unity3d.com/support/documentation/Manual/Security Sandbox.html)上找到了答案,这还是看了这个网站N次之后找到的线索(很多相关的资料都提到了这个网站,英文又烂Unity3d <wbr>webplayer连接Sokcet服务器),这个网站上介绍了两个方法来解决连接webplayer的问题(WWW和Socket),不过由于我是用socket写的,所以只具体看了Socket的解决方法。原来unity给我们写好了一个简单的返回通信策略的例子,这个代码文件的路径(以我的为例:C:\Program Files\Unity\Editor\Data\Tools\SocketPolicyServer),然后用VS新建了一个项目,把代码copy进去运行,发现还要设置一个运行参数,在项目属性->调试->启动选项->命令行参数中输入--all或者--local(本来应该还有个--file的,不过我不知道该怎么用,基础太差了。。)。设置好之后运行,再运行服务器以及客户端,点连接,发现没有那个错误了,连接成功!在相同的局域网内,应该是都可以成功,至于去连接不同的外网,由于整个公司都是同一个外网,而这个又只是拿来测试下功能,所以也就没去检验过了,不过我想应该是差不多的。。
    当然这是在测试,所以运行相当于两个服务器也关系不是很大,如果做项目的时候,最好都写在同一个代码里面
原创粉丝点击