博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
建立Socket Policy服务器
阅读量:5134 次
发布时间:2019-06-13

本文共 1143 字,大约阅读时间需要 3 分钟。

建立Socket Policy服务器

(金庆的专栏)
Flash和Unity3D游戏服务器需要开启一个Socket Policy服务器。
详细说明见:Setting up a socket policy file server
http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html
协议如下:
Flash或U3D播放器向Socket Policy服务器发送请求:
“<policy-file-request/>\0”,
服务器返回一个xml文本,其中有包含<cross-domain-policy>配置。
Adobe提供了Perl和Python代码。Unity3D提供了CSharp代码。
cs代码用于Windows. Linux上准备使用Python代码。
在以上网页下载:flashpolicyd_v0.6.zip。
其中有3个版本:init服务,xinetd服务,独立应用。只需一种即可。
按应用的性质,请求量极小,所以最适合应用xinetd.
只需运行其中的install.sh就会安装。
还需手工在/ect/services中添加服务名flashpolicy和端口843.
运行以下指令可以测试一下,输出应该是配置文件的内容。
python -c 'print "<policy-file-request/>%c" % 0' | nc 127.0.0.1 843
其实以上测试指令在尾部多了个'\n', 不是标准的测试。
在in.flashpolicyd.py中多了个strip()去除这个'\n'.
实际用U3D测试时,因为没有'\n'结尾,所以in.flashpolicyd.py无法正常工作。
需要将35行readline()如下更改:
        request = sys.stdin.readline().strip()
改为
        request = sys.stdin.readline(len('<policy-file-request/>\0')).strip()
这样就不需要eol就可以读取了。
查看其他两个版本的代码没有这个错误,但是有另一个错误,
即有可能只读一半的请求造成判断出错。
还有一个问题是因为服务是由nobody运行的,环境变量不同,
将in.flashpolicyd.py头部的
#!/usr/bin/env python
明确为
#!/usr/local/sbin/python
可避免调用低版本的python而报错。

转载于:https://www.cnblogs.com/hdjsjlbs/archive/2013/05/03/3057022.html

你可能感兴趣的文章
【Zookeeper学习】Apache Zookeeper项目简介
查看>>
CAGradientLayer简介 实现颜色渐变
查看>>
python实现冒泡排序
查看>>
20150915密度聚类
查看>>
mysql 用户权限管理
查看>>
问题账户需求分析
查看>>
苏州银行对公定存通项目
查看>>
页面中的滚动条定时自动下滚
查看>>
比较两个对象是否一样的代码
查看>>
微信小程序wx.request请求用POST后台得不到传递数据
查看>>
如何在Eclipse上使用SVN,安装、提交、拉取代码、解决冲突等操作
查看>>
为什么使用 Redis及其产品定位
查看>>
设计模式--spring源码中使用策略模式(Strategy Pattern)
查看>>
JavaScript
查看>>
C语言 函数指针一(函数指针的定义)
查看>>
Head First 设计模式 --4 工厂模式 抽象工厂模式
查看>>
Django之ModelForm详解
查看>>
福建省队集训被虐记——DAY3
查看>>
知识点笔记(二维数组排序、统计数组重复个数、)
查看>>
使用SecureCRT设置linux系统登录的ssh公钥认证
查看>>