在碳包中嵌入网络服务器
Posted
技术标签:
【中文标题】在碳包中嵌入网络服务器【英文标题】:Embed webserver in carbon bundle 【发布时间】:2010-12-29 05:43:46 【问题描述】:我需要在为 Adobe Flash CS4 编译的 jsfl 外部库中嵌入一个小型网络服务器,以便外部进程可以与之通信。外部库将是 Mac 上的 Carbon 包和 Windows 上的一组 dll,因此网络服务器将需要从 C/C++ 代码嵌入/加载,而无需像 Ruby 这样的外部依赖项。大多数像 fnord 或 mini-httpd 这样的小型网络服务器从未被移植到 Mac 或 Windows 上,但主要是为了在 Linux 上编译。我正在考虑使用基于 Lua 的嵌入式网络服务器,但不确定这是否可行。有没有比其他的更容易移植到 Windows 和 Mac 的嵌入式网络服务器?
【问题讨论】:
【参考方案1】:好吧,我终于回答了这个问题。在评估了几个网络服务器后,我发现了一个 gem,Mongoose。 Mongoose 是一个用 C 语言编写的非常小的可嵌入 Web 服务器,可以在 Linux、Mac 和 Windows 上轻松编译和运行(在 wiki 中甚至有一个链接可以让它在 iPhone 上运行)。许多网络服务器说他们这样做,但 Mongoose 很容易启动和运行。它完全符合我对小型 Web 服务器的预期,并且无需大惊小怪。我以前的方法,使用 libevent 或 libev,我发现有点太难了,主要是因为我在主 GUI 线程中遇到了线程问题。 Mongoose 支持 CGI 和 php,但实际上我发现基于 C 的处理程序非常容易编写,所以我坚持使用它。
【讨论】:
使用 Mongoose 几个月后,我仍然喜欢它,很棒的嵌入式网络服务器。【参考方案2】:Webrick 和 Mongrel 在两者上运行。
【讨论】:
我真的需要一个没有任何外部依赖的网络服务器,比如 Ruby。这就是为什么我认为基于 Lua 的网络服务器可能是最好的选择。 真正的 NSD,但比 Ruby 或 Python 小得多。【参考方案3】:我想到了另一个比 Lua 更简单的想法,我将尝试:使用一个使用 libevent 构建的网络服务器。我真正需要做的就是提供一个文件,并且我不需要任何其他 HTTP 功能,因此可能会使用以下内容:
http://3.rdrail.net/blog/libevent-webserver-in-40-lines-of-c/
我会回来报告的。
【讨论】:
以上是关于在碳包中嵌入网络服务器的主要内容,如果未能解决你的问题,请参考以下文章