zzzhhy 2014-11-18 10:18 采纳率: 0%
浏览 2192

我想通过软件,获取本机外网ip地址,然发送给web服务器跳转,类似花生壳

我想通过写一个软件,每天开机的时候获取本机外网ip地址,然发送给web服务器做跳转,类似花生壳,这样其他人就可以通过访问web服务器,就可以跳转到我的ip对应的网站,这个请问要怎么实现呢,谢谢回答!

  • 写回答

3条回答 默认 最新

  • 91program 博客专家认证 2014-11-18 10:21
    关注

    VC 代码:
    BOOL GetNetworkInfoTemp(pOne_Adapter_Info pOneAdapterInfo,char *pcOneDesc)
    {
    PIP_ADAPTER_INFO pAdapterInfo;
    PIP_ADAPTER_INFO pAdapter = NULL;
    DWORD dwRetVal = 0;

    pAdapterInfo = (IP_ADAPTER_INFO *) malloc( sizeof(IP_ADAPTER_INFO) );
    ULONG ulOutBufLen = sizeof(IP_ADAPTER_INFO);
    
    // Make an initial call to GetAdaptersInfo to get
    // the necessary size into the ulOutBufLen variable
    if (GetAdaptersInfo( pAdapterInfo, &ulOutBufLen) == ERROR_BUFFER_OVERFLOW) {
        free(pAdapterInfo);
        pAdapterInfo = (IP_ADAPTER_INFO *) malloc (ulOutBufLen); 
        if (pAdapterInfo == NULL) {
            TRACE("Error allocating memory needed to call GetAdaptersinfo\n");
            return 1;
        }
    
        if ((dwRetVal = GetAdaptersInfo( pAdapterInfo, &ulOutBufLen)) == NO_ERROR)
        {
            pAdapter = pAdapterInfo;
            while (pAdapter)
            {
                if(NULL != pcOneDesc && NULL != pOneAdapterInfo)
                {
                    if(0 == strncmp(pcOneDesc,pAdapter->Description,strlen(pcOneDesc)))
                    {
                        ZeroMemory(pOneAdapterInfo,sizeof(One_Adapter_Info));
    
                        strcpy(pOneAdapterInfo->AdapterName,pAdapter->AdapterName);
                        strcpy(pOneAdapterInfo->Description,pAdapter->Description);
                        pOneAdapterInfo->AddressLength = pAdapter->AddressLength;
                        memcpy(pOneAdapterInfo->Address,pAdapter->Address,sizeof(char) * (MAX_ADAPTER_ADDRESS_LENGTH));
                        pOneAdapterInfo->IpAddressList = pAdapter->IpAddressList;
                        pOneAdapterInfo->GatewayList = pAdapter->GatewayList;
                    }
                }
    
                TRACE("\tAdapter Name: \t%s\n", pAdapter->AdapterName);
                TRACE("\tAdapter Desc: \t%s\n", pAdapter->Description);
                TRACE("\tAdapter Addr: \t");
                for (UINT i = 0; i < pAdapter->AddressLength; i++) {
                    if (i == (pAdapter->AddressLength - 1))
                        TRACE("%.2X\n",(int)pAdapter->Address[i]);
                    else
                        TRACE("%.2X-",(int)pAdapter->Address[i]);
                }
                TRACE("\tIP Address: \t%s\n", pAdapter->IpAddressList.IpAddress.String);
                TRACE("\tIP Mask: \t%s\n", pAdapter->IpAddressList.IpMask.String);
    
                TRACE("\tGateway: \t%s\n", pAdapter->GatewayList.IpAddress.String);
                TRACE("\t***\n");
    
                if (pAdapter->DhcpEnabled)
                {
                }
                pAdapter = pAdapter->Next;
            }
            free(pAdapterInfo);
        }
        return TRUE;
    }
    
    return FALSE;
    

    }

    评论

报告相同问题?

悬赏问题

  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler