建立Socket Policy伺服器

2022-07-25 04:39:09 字數 1048 閱讀 3358

建立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服務...