2010-11-22 74 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源文件。这取决于您的构建环境,但将这样的命令行工具集成到构建过程中往往是一小步。