mongoose在Windows Server 2003上不能訪問問題的解決

這兩天在部署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.orgmarkdown

相關文章
相關標籤/搜索