您的位置:首页 > 编程语言 > Go语言

mongoose在Windows Server 2003上不能访问问题的解决

2015-11-23 17:48 330 查看
这两天在部署EasyDarwin开源流媒体服务器到Windows Server 2003的时候,奇怪地发现,在Windows 2003上面,mongoose的web管理端口居然无法访问,但通过netstat等命令查看,端口已经在Listening状态的;

于是经过各种代码跟踪调试,终于发现了问题的原因:

在mongoose.c中:

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 2008、win7中,sock值都会低于1024,但是在Windows Server 2003中,sock描述居然大于1024,导致mongoose对连接不进行select accept处理;

我们修改成:if ( sock != INVALID_SOCKET ) 判断就可以了;

EasyDarwin可以在Windows Server 2003正常工作了:



获取更多信息

邮件:support@easydarwin.org

WEB:www.EasyDarwin.org
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: