这两天在部署EasyDarwin开源流媒体服务器到Windows Server 2003的时候,奇怪地发现,在Windows 2003上面,mongoose的web管理端口竟然没法访问,但经过netstat等命令查看,端口已经在Listening状态的;
因而通过各类代码跟踪调试,终于发现了问题的缘由:
在mongoose.c中:web
static void ns_add_to_set(sock_t sock, fd_set *set, sock_t *max_fd) {
//if ( (sock != INVALID_SOCKET) && (sock < FD_SETSIZE) ) {
if ( sock != INVALID_SOCKET ) {
FD_SET(sock, set);
if (*max_fd == INVALID_SOCKET || sock > *max_fd) {
*max_fd = sock;
}
}
}
通常系统内都定义FD_SETSIZE为1024,在Windows Server 200八、win7中,sock值都会低于1024,可是在Windows Server 2003中,sock描述竟然大于1024,致使mongoose对链接不进行select accept处理;
咱们修改为:if ( sock != INVALID_SOCKET ) 判断就能够了;
EasyDarwin能够在Windows Server 2003正常工做了:
bash
邮件:support@easydarwin.org服务器
WEB:www.EasyDarwin.orgmongoose