建立socket policy伺服器
(金慶的專欄)
flash和unity3d遊戲伺服器需要開啟乙個socket policy伺服器。
詳細說明見:setting up a socket policy file server
協議如下:
「\0」,
伺服器返回乙個xml文字,其中有包含配置。
adobe提供了perl和python**。unity3d提供了csharp**。
cs**用於windows. linux上準備使用python**。
其中有3個版本:init服務,xinetd服務,獨立應用。只需一種即可。
按應用的性質,請求量極小,所以最適合應用xinetd.
只需執行其中的install.sh就會安裝。
還需手工在/ect/services中新增服務名flashpolicy和埠843.
執行以下指令可以測試一下,輸出應該是配置檔案的內容。
python -c 'print "%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('\0')).strip()
這樣就不需要eol就可以讀取了。
檢視其他兩個版本的**沒有這個錯誤,但是有另乙個錯誤,
即有可能唯讀一半的請求造成判斷出錯。
還有乙個問題是因為服務是由nobody執行的,環境變數不同,
將in.flashpolicyd.py頭部的
#!/usr/bin/env python
明確為#!/usr/local/sbin/python
可避免呼叫低版本的python而報錯。
使用Topshelf建立Windows服務
一 概述 topshelf是建立windows服務的一種方法,topshelf是乙個開源的跨平台的宿主服務框架,支援windows和mono,只需要幾行 就可以構建乙個很方便使用的服務宿主。二 安裝方法 3 在visual studio中新建乙個專案,只需要引用topshelf.dll 即可,為了日...
使用Topshelf建立Windows 服務
使用topshelf建立windows 服務 2 使用visual studio建立乙個控制台應用程式引用程式集topshelf.dll 合log4net.dll 用nuget 查詢topshelf 安裝 topshelf和 topshelf.log4net 即可 3 建立乙個簡單的服務類,裡面包含...
使用Topshelf建立Windows 服務
winndows service 是一種可隨 windows 作業系統啟動而啟動的,在後台執行的,通常不和使用者產生互動的程式。它無法通過雙擊來執行,類似於 unix 守護程序 daemon processes 當使用者登出時它也不會停止。windows 服務由三部分組成 開發乙個windows服務...