rt,兄弟正在做一个isapi的小程序,需要获取到调用isapi的各个可户的ip地址,对我来说这个功能很重要,请哪位大侠出来指点2句,不胜感激.

解决方案 »

  1.   

    DWORD CIPAddressFilter::OnUrlMap(CHttpFilterContext* pCtxt, PHTTP_FILTER_URL_MAP pMapInfo)
    {
    char szAddress[80];
    DWORD dwSize = sizeof(szAddress);
    if (pCtxt->GetServerVariable("REMOTE_ADDR", szAddress, &dwSize))
    {
    //  Make sure this address is a valid address
    BOOL fAllowed;
    if ( !ValidateIPAddress(szAddress, &fAllowed ))
    {
    ISAPITRACE2("[OnUrlMap] Error %d validating address %s\n", GetLastError(), szAddress );
    return SF_STATUS_REQ_ERROR;
    } if ( !fAllowed )
    {
    //  This ip address isn't allowed access.  Map to information URL
    strncpy(pMapInfo->pszPhysicalPath, NO_ACCESS, pMapInfo->cbPathBuff-1);
    }
    }

      return SF_STATUS_REQ_NEXT_NOTIFICATION;
    }
      

  2.   

    在任何 CHttpServerContext *pCtxt和CHttpFilterContext* pCtxt的环境指针下,
    你都可以用如下简单的代码获得请求方的IP:
    DWORD dwLen=64;
    char b_ip[64];
    memset(b_ip,'\0',64);
    pCtxt->GetServerVariable("REMOTE_ADDR",b_ip,&dwLen);
    设置64是考虑IPv6,在v4下,16字节就可以了