【发布时间】:2011-07-26 12:34:15
【问题描述】:
我尝试使用 IIS 7(包括在 Windows 7 中)来测试我目前正在开发的 FastCGI 库。
根据最初的 FastCGI 规范,当一个应用程序被调用时,它的stdin 句柄被替换为一个套接字。默认情况下,IIS 使用命名管道,但可以将其配置为使用 TCP,即套接字。
当我尝试在我的测试应用程序中使用这个套接字时,我得到一个WSAENOTSOCK 错误。
当我尝试改用命名管道时(在重新配置 IIS 之后),我遇到了类似的问题。例如,当我尝试使用PeekNamedPipe 时,我得到一个ERROR_INVALID_HANDLE。 ReadFile 和 WriteFile 但是可以正常工作。
我猜问题是这个句柄是从父进程继承的,当前进程并不真正知道它的确切类型。似乎假设句柄代表一个简单的文件。
有没有人遇到过类似的问题并知道解决方案/解决方法?我能否以某种方式更新句柄的进程内状态,以便 WIN32 API 函数将其作为套接字/命名管道接受?
【问题讨论】:
标签: sockets iis-7 tcp fastcgi named-pipes