2010-11-22 73 views
2

我正在編寫的應用程序是一部分PHP和一部分C.這兩部分將通過套接字進行通信。作爲IPC協議的一部分,應用程序將依賴「消息類型」字節。例如,如果數據塊的第一個字節是1,則其餘意味着像顯示系統信息等php和c之間的共享配置文件

在C頭文件,我可以定義這些消息類型等...

#define GET_SYSTEM_INFO 0x1 
#define SET_SECURITY_LEVEL 0x2 
etc 

我真的很喜歡它,如果我可以在php部分和c應用程序共享的文件中定義這些值。這樣,他們正在開發一套通用的配置。它不一定是頭文件,但我想知道是否有一些簡單的機制來解析一個公共文件。

感謝您的任何建議。

+0

配置文件通常意味着可以更改這些值。如果將它們包含在C頭文件中,則這些值將被編譯到程序中。你想要這些值被動態配置嗎?或者他們只是神奇的數字,你想要一個容易的地方來定義它們?後者是 – Falmarri 2010-11-22 19:07:50

回答

2

我會建議,因爲你真的想爲開發而做,而最終用戶不需要訪問你的協議的內部,例如解析一個php文件,並創建一個包括C,或者通過您的構建腳本相反。

2

我從來沒有使用C之前,但我會假設它可以很容易地解析像PHP一樣的INI文件。

查看PHP的parse_ini_file()

1

這是類似Google Protocol BuffersApache Thrift這樣的項目試圖解決的問題。

但是,如果你想自己做這件事,有兩種方法可以解決這個問題。一種是從一些描述中生成代碼(在你的例子中爲#define)。另一個是在運行時確定消息類型(我猜你不想要)。

無論哪種方式,你需要解決一些描述格式。例如,您可以編寫一個分析INI文件,JSON文件,YAML文件等的小PHP腳本,它包含一個包含C程序的模板,並填充空白以輸出最終的C源文件。這取決於您的構建環境,但將這樣的命令行工具集成到構建過程中往往是一小步。