免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 7149 | 回复: 4
打印 上一主题 下一主题

如何比较两个ip地址是否相等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-08 15:12 |只看该作者 |倒序浏览
比如我要封装一个这样的函数
bool ipInSet(char *ip, char *ips[]);
如果ip在后面的数组中,则返回true,否则返回false
要处理ip是主机名的情况,有现成的api可以调用吗?
谢谢大家

论坛徽章:
0
2 [报告]
发表于 2010-02-08 15:23 |只看该作者
hash之

论坛徽章:
0
3 [报告]
发表于 2010-02-08 15:27 |只看该作者
ip的实质是一个unsigned int ,你用字符串去做,效率低,好累!

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
4 [报告]
发表于 2010-02-08 18:46 |只看该作者
回复 1# zxq230104

将主机名转换为IP地址的函数实现,name为主机名(可以是IP地址),转换后的IP地址存放在buff中:
in_addr_t getIpaddrByName(const char *name, char *buff, const int bufferSize)
{
        struct in_addr ip_addr;
        struct hostent *ent;
        in_addr_t **addr_list;
        
        if (inet_pton(AF_INET, name, &ip_addr) == 1)
        {
                if (buff != NULL)
                {
                        snprintf(buff, bufferSize, "%s", name);
                }
                return ip_addr.s_addr;
        }

        ent = gethostbyname(name);   
        if (ent == NULL)
        {      
                return INADDR_NONE;
        }
        addr_list = (in_addr_t **)ent->h_addr_list;
        if (addr_list[0] == NULL)
        {
                return INADDR_NONE;
        }
                        
        memset(&ip_addr, 0, sizeof(ip_addr));
        ip_addr.s_addr = *(addr_list[0]);
        if (buff != NULL)
        {     
                if (inet_ntop(AF_INET, &ip_addr, buff, bufferSize) == NULL)
                {
                        *buff = '\0';   
                }   
        }
                 
        return ip_addr.s_addr;
}

论坛徽章:
0
5 [报告]
发表于 2010-02-08 22:16 |只看该作者
strcmp()?
玩笑了,楼上是正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP