zoukankan      html  css  js  c++  java
  • InstallShield高级应用获得本机的IP地址

    直接给出源代码,有问题的欢迎交流。

    ///////////////////////////////////////////////////////////////////////////////
    //
    // Tcp/Ip function GetLocalIP
    //
    // By: chhuic 2010-12-26
    //
    //
    ///////////////////////////////////////////////////////////////////////////////

    #define WSADESCRIPTION_LEN 256
    #define WSASYS_STATUS_LEN 128

    typedef
    WSAData
    begin
    INT wVersion;
    INT wHighVersion;
    string szDescription[WSADESCRIPTION_LEN+1];
    string szSystemStatus[WSASYS_STATUS_LEN+1];
    short iMaxSockets;
    short iMaxUdpDg;
    POINTER lpVendorInfo;
    end;
    ////////////////////
    typedef HostEnt
    begin
    POINTER ph_name; /* official name of host */
    POINTER ph_aliases; /* alias list */
    short h_addrtype; /* host address type */
    short h_length; /* length of address */
    POINTER ph_addr_list; /* list of addresses */
    end;

    //////////////////
    typedef IPName
    begin
    STRING szIPAddr[100];
    end;
    /////////////

    typedef IPAddrList
    begin
    POINTER pIPAddr;
    end;

    /////////////

    typedef IPAddPtr
    begin
    LONG nIPAddr;
    end;
    /////////////


    prototype POINTER wsock32.gethostbyname(BYREF STRING);
    prototype POINTER wsock32.gethostname(BYREF STRING, NUMBER);
    prototype POINTER wsock32.WSAStartup(INT, POINTER);
    prototype POINTER wsock32.inet_ntoa( NUMBER);
    prototype POINTER wsock32.WSACleanup();
    prototype int wsock32.WSAGetLastError ();
    prototype STRING GetLocalIP();

    function STRING GetLocalIP()
    WSAData structWSAData;
    WSAData POINTER pWSAData;
    //
    IPName LocalIPName;
    IPName POINTER pLocalIPName;
    //
    IPAddrList structIPAddrList;
    IPAddrList POINTER pIPAddrList;
    IPAddPtr structIPAddPtr;
    IPAddPtr POINTER pIPAddPtr;

    POINTER pIN_Addr_Struct;
    HostEnt structHostEnt;
    HostEnt POINTER pHostEnt;
    SHORT nlen;
    NUMBER nIPNetAddr;

    NUMBER nVersion;
    STRING szMsg;
    STRING szDefault;
    STRING szURL;
    STRING szPath;
    NUMBER nRC;
    NUMBER nRC2;
    STRING szHostName;
    STRING szMYIPAddr;
    POINTER pWinSockReturn;

    begin
    pWSAData = &structWSAData;

    nRC = UseDLL ("wsock32.dll");
    pWSAData -> wHighVersion = 1;
    pWSAData -> wVersion = 1;
    nVersion = 0x02000002; // can be 0x01000001 for Windows NT but Windows 95 requires the version 2 settings

    pWinSockReturn = WSAStartup(nVersion, pWSAData);
    pWinSockReturn = gethostname(szHostName,100);
    pHostEnt = gethostbyname(szHostName);

    nlen = pHostEnt -> h_length; // debug check (should be 4)
    pIPAddPtr = pHostEnt -> ph_addr_list;
    pIPAddPtr = *pIPAddPtr;
    nIPNetAddr = *pIPAddPtr;
    // nIPNetAddr = pIPAddPtr -> nIPAddr;
    pLocalIPName = inet_ntoa( nIPNetAddr );
    szMYIPAddr = pLocalIPName -> szIPAddr;
    WSACleanup();
    UnUseDLL("wsock32.dll");
    return szMYIPAddr;
    end;

  • 相关阅读:
    STM32 Cube之旅-尝试新的开发方式
    FOC 电流采样为什么不准?你忽略了这个细节
    STM32 外部中断详解(原理+配置代码)
    STM32 TIM高级定时器死区时间的计算
    【STM32系列汇总】小白博主的STM32实战快速进阶之路(持续更新)
    FOC 算法基础之欧拉公式
    一阶RC高通滤波器详解(仿真+matlab+C语言实现)
    一阶RC低通滤波器详解(仿真+matlab+C语言实现)
    matlab 调用C程序进行simulink仿真
    matlab 提示 Error using mex No supported compiler or SDK was found 错误的解决办法
  • 原文地址:https://www.cnblogs.com/chhuic/p/2072703.html
Copyright © 2011-2022 走看看