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

这两天在部署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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值