FastCGI应用程序 - 如何获取侦听套接字句柄?

时间:2014-04-11 16:23:44

标签: c++ sockets assembly fastcgi

该主题的所有示例都基于一些C / C ++库,如fcgi_stdio和类似的。但我想使用汇编语言制作FastCGI脚本,并且没有这样的库。

几乎所有关于协议和通信的内容都是清楚的,但是我仍然无法理解程序如何获取由Web服务器传递的侦听套接字的句柄?

我的发现:

我安装了lighttpd服务器,并尝试对其进行配置,以使fastCGI能够与我的程序一起使用。

但我很困惑,配置文件需要“host”和“port” - 这是否意味着FastCGI应该自己创建监听套接字?我的意思是使用socket / bind / listen / accept函数?然后我的应用程序将如何知道这些主机和端口参数。它们在Web服务器配置文件中?

lighttpd允许的另一种方式是指定一些命名的套接字路径 - 例如“/tmp/myapp.socket”。我的申请如何处理?它将如何知道这条道路?

我尝试使用accept(0,...)制作一些小程序作为他的答案中指定的@ user58697(这个答案符合官方的FastCGI规范!)遗憾的是没有发生任何事情 - 接受的调用失败了!

那么,沟通是服务器特定的吗?

1 个答案:

答案 0 :(得分:3)

根据spec,从应用程序的角度来看,FCGI_LISTENSOCK_FILENO等于STDIN_FILENO,定义为0.这意味着你应该accept(STDIN_FILENO, ...)甚至accept(0, ...)