在UDP通信的时候需要绑定IP和端口。如何让程序自动获得本机的IP地址??用什么函数来实现??有知道的朋友请帮忙解答下!!谢谢!!

解决方案 »

  1.   

    先用gethostname()获得本机地址
    再用gethostbyname()就可以得到本机的ip列表了
    具体参数自己去查查看
      

  2.   

    char chName[80];
    CString IP="";
    gethostname(chName,80);
    pcName = chName;
    struct hostent* phost;
    int occurred=0,j=0;
    phost=gethostbyname(chName);
    int h_length=4;
    for(j=0;j<h_length;j++)
    {
    CString addr;
    if(j>0)
    IP+=".";
    addr.Format("%u"
    ,(unsigned int)((unsigned char*)phost->h_addr_list[occurred])[j]);
    IP+=addr;
    }
      

  3.   

    struct hostent* phost;
    这个结构体指针指的结构体具体是怎么样的???结构体包括哪些元素???
      

  4.   

    MSDN里面有详细的说明:struct hostent {
        char FAR *       h_name;
        char FAR * FAR * h_aliases;
        short            h_addrtype;
        short            h_length;
        char FAR * FAR * h_addr_list;
    };
      

  5.   

    用这段代码,可以搞定
    /* 获得本机IP */GetLocalIP(char *strLocalIP)
    {
    try
    {
    char sName[255] = {0};
    PHOSTENT hostinfo = 0;

    if (gethostname(sName, sizeof(sName)) == 0)
    {
    if ((hostinfo = gethostbyname(sName)) != NULL)
    {
    strcpy(strLocalIP,inet_ntoa (*(struct in_addr *)*hostinfo->h_addr_list));
    }
    }
    return TRUE;
    }
    catch (...)
    {
    Print(0, "获得本地IP出错! \n");
    return FALSE;
    }
    }