gethostbyname should be enough.

解决方案 »

  1.   

    const char FAR *name = "www.csdn.net";
        unsigned long ulIP;
        hostent *ch;    WORD wVersionRequested;
        WSADATA wsaData;
        int err;
         
        wVersionRequested = MAKEWORD( 2, 2 );
         
        err = WSAStartup( wVersionRequested, &wsaData );    ch = gethostbyname(name);    if(ch != NULL)
        {
             ulIP = *(DWORD*)(*ch->h_addr_list);
                printf("%u\n", ulIP);
        }
        else
            printf("FAILED %d\n",GetLastError());    WSACleanup();
    错误处理没有写
      

  2.   

    我把ulIP转成CString类型返回,过程如下:CString ip;
    ip.Format("%d",ulIP);   
    return(ip);请问如何把ip由CString形式转变成a.b.c.d的形式呢?
      

  3.   

    #include <winsock2.h>
    #include <windows.h>
    #include <stdio.h>#pragma comment(lib,"ws2_32.lib")void main()
    {
        const char FAR *name = "www.csdn.net";
        unsigned long ulIP;    hostent *ch;    LPSTR szAddr;
    struct in_addr inetAddr;    WORD wVersionRequested;
        WSADATA wsaData;
        int err;
         
        wVersionRequested = MAKEWORD( 2, 2 );
         
        err = WSAStartup( wVersionRequested, &wsaData );    ch = gethostbyname(name);    if(ch != NULL)
        {
            ulIP = *(DWORD*)(*ch->h_addr_list);
         inetAddr.s_addr = (ULONG)ulIP;
         szAddr = inet_ntoa(inetAddr);
         char * csIP = szAddr;        inet_addr((*ch->h_addr_list));
            printf("%u\n", ulIP);
            printf("%s\n", csIP);
        }
        else
            printf("FAILED %d\n",GetLastError());    WSACleanup();}
    //windows xp/VS.net/Platform SDK Nov 2001
      

  4.   

    用inet_addr(far char *)可将字符型的转化成unsigned short型的,即你需要的!
      

  5.   

    地址转换函数 int inet_aton(const char *strptr,struct in_addr *addrptr); 返回:1——串有效,0——串出错 in_addr_t inet_addr(const char *strptr); 返回:若成功,返回32位二进制的网络字节序地址;若出错,则返回INADDR_NONE char *inet_ntoa (struct in_addr inaddr); 返回:指向点分十进制数串指针  ine-aton 将 strptr 所指的C字符串转换成32位的网络字节序二进制值并通过指针 addrptr来存储。如果成功返回1,否则返回0。 inet-addr 将 strptr 所指的C字符串转换成32位的网络字节序二进制值并通过涵数值返回。 函数inet-ntoa将一个32位的网络字节序二进制IPv4地址转换成相应的点分十进制数串。 如: 202.116.34.194.4000 (IP:202.116.34.194 端口4000) 可用于 IPv4 和 IPv6的函数 int inet_pton(int family,const char *strptr,void *addrptr); const char *inet_ntop(int family.const void *addrptr,char *strptr,size_t len); p: presentation 地址的表示 202.116.34.194 n: numeric 数值格式 16bits/32bits integer 
    family : AF_INET 或 AF_INET6 
      

  6.   

    谢谢 error0(玄武岩) 大哥,我太佩服你了!