从url中找出ip地址

比如 http://192.168.1.111:3000/2.xml
比如 http://192.168.2.222/dddd.png

思路

设定接口函数为:

const char * findip(string &xmlip, int &num)

1 从中找出第一个数字,如果没有数字,那就返回NULL
2 从中找到末位是’:’ , ‘/’ 的,如果找不到,就返回NULL
此种为特定的函数,并没有把所有出错处理完成,也没有完成是否是IP地址
所以完成后,必须检测是否是ip地址

const char * findip(string &xmlip, int &num)
{#define JUDGE if(pos==pend){num=0;return NULL;}const char *pos = xmlip.c_str();const char *pstart = pos;const char *pend = pos + xmlip.size();if (isdigit(*pos))pstart = pos;else while (!::isdigit(*(++pos)) && (pos!=pend));JUDGEpstart = pos;while ((++pos != pend) && (*pos)!= '/' && (*pos) != ':');JUDGEnum = pos - pstart;return  pstart;
}

但是这种没有考虑最后一位是数字的情况,修改一下判读虽然到了结尾但是结尾是数字的情况,这种边缘测试是非常需要的,对这个函数进行用例上的测试确实需要完整,当然我们的函数依然是不完整,不过大多数的情况已经覆盖:

const char * findip(string &xmlip, int &num)
{const char *pos = xmlip.c_str();const char *pstart = pos;const char *pend = pos + xmlip.size();if (isdigit(*pos))pstart = pos;else while (!::isdigit(*(++pos)) && (pos!=pend));if (pos == pend) {num = 0; return NULL; }pstart = pos;while ((++pos != pend) && (*pos)!= '/' && (*pos) != ':');if (pos == pend){if (!isdigit(*(pend - 1))){num =0;return NULL;}}num = pos - pstart;return  pstart;
}

测试

int main()
{string test;string ipxml = "http://192.168.1.123:3001/test.xml";int num = 0;const char * ip = findip(ipxml, num);test = string(ip, num);cout << test <<endl;ipxml = "192.168.1.123:3001";ip = findip(ipxml, num);test = string(ip, num);cout << test << endl;ipxml = "192.168.1.123/2.xml";ip = findip(ipxml, num);test = string(ip, num);cout << test << endl;ipxml = "http://192.168.1.123/2.xml";ip = findip(ipxml, num);test = string(ip, num);cout << test << endl;ipxml = "http://192.168.1.23";ip = findip(ipxml, num);test = string(ip, num);cout << test << endl;getchar();
}

输出

192.168.1.123
192.168.1.123
192.168.1.123
192.168.1.123
192.168.1.23

这样基本的情况已经判定了,需要的是接下去判定是否是真实的ip地址。读者可以自行完成。

url中找出IP地址相关推荐

  1. 字节一面:如何从 100 亿 URL 中找出相同的 URL?

    点击关注公众号,Java干货及时送达 题目描述 给定 a.b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G.请找出 a.b 两个文件共同的 URL. 解答思路 每 ...

  2. 如何从 100 亿 URL 中找出相同的 URL?

    来源 | https://doocs.github.io/advanced-java/ 题目描述 给定 a.b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G.请找 ...

  3. 面试:如何从大量的 URL 中找出相同的 URL?

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | http://8rr.co/FR7V 赠书:聊 ...

  4. 面试:如何从 100 亿 URL 中找出相同的 URL?

    题目描述 给定 a.b 两个文件,各存放 50 亿个 URL,每个 URL 各占 64B,内存限制是 4G.请找出 a.b 两个文件共同的 URL. " 推荐一个艿艿写的 6000+ Sta ...

  5. 从亿级数据量的url中找出出现次数最多的前十个url

    流程: mapToPair + reduceByKey:计算每个url的出现次数: mapToPair + sortByKey:反转PairRDD,按照降序的方式对url的出现次数进行排序: take ...

  6. 3.请执行命令取出linux中eth0的IP地址(考试题答案系列)

    说明:本文为老男孩linux培训某节课前考试试题及答案分享博文内容的一部分,也是独立成题的,你可以点下面地址查看全部的内容信息.http://oldboy.blog.51cto.com/2561410 ...

  7. 计算机网络配置虚拟ip,好不好在电脑中设置虚拟IP地址?

    更改IP地址 广域IP: 1.如果是PPOE上网只需断开连接再重新连上就好了,服务器会从IP地址池中随机分配一个IP地址给你. 2.固定IP上网那你要找运营商更改了,这样改是快不了的. 局域IP: 网 ...

  8. 计算机 修改 虚拟ip,怎么样在电脑中设置虚拟IP地址?

    满意答案 wtc6981 2020.03.01 采纳率:56%    等级:9 已帮助:114人 更改IP地址 广域IP: 1.如果是PPOE上网只需断开连接再重新连上就好了,服务器会从IP地址池中随 ...

  9. C++ 实现 ping 功能 域名(URL)解析实际 IP地址

    1.简述 一般情况下,我们想知道在当前电脑设备环境下,某一个网址能不能访问,最简单的方法是win + R 键 ,输入cmd,召唤cmd命令行程序,然后直接用ping命令 + 网址 来看返回的结果,那么 ...

最新文章

  1. 「苹果牌」电动车要来了:最早明年见,还带着突破性电池技术
  2. 苹果连接电脑只能充电_苹果 iPhone 12 曝充电 Bug:多口充电器无一幸免 只能用单独充电头 - 手机 - IT商业网...
  3. linux开启防火墙挂载nfs
  4. python下载的库要放到哪里-Python下载url并保存文件的三种方法
  5. C# 学习笔记(10)加速球
  6. 【Paper】2007_Consensus control for a class of networks of dynamic agents 二阶静态一致性
  7. Scala之部分应用函数
  8. 花了一天精选了20多篇好文,只为与你分享
  9. python的power bi转换基础
  10. vue与elementUI中给el-input绑定键盘按键--按键修饰符
  11. 后端数据成功返回 页面不渲染_如何统计页面访问量,看这一篇就够了
  12. 华为鸿蒙3799跟4799有啥区别,华为鸿蒙智慧屏出世!3799元高价,是增智慧还是智商税?...
  13. Java基础----泛型
  14. Diamond书写FPGA代码
  15. Vue实现户籍管理系统户籍信息的添加与删除
  16. 短视频运营方法分享,三个方面要注意,合理运营才能吸粉引流
  17. 一部手机必须能用 7 年?苹果、三星、Google:三年支持差不多!
  18. 从键盘输入一个阿拉伯数字,输出对应的财务数字, 用switch。/*零、壹、贰、叁、肆、伍、陆、柒、捌、玖、亿、万、仟、佰、拾。
  19. 漏洞建议:实施 TLS_FALLBACK_SCSV。此外,要么完全禁用 SSLv3,要么禁用以通过 SSLv3 的 CBC 模式操作的所有密码套件
  20. uniapp vue3版本 引用color-ui的cu-custom组件问题

热门文章

  1. 年轻人的钱包,被十一假期榨干了
  2. 微软Surface Pro 8曝光:搭载第11代酷睿处理器和Win11系统
  3. 陌陌宣布启用全新中文名“挚文集团” ,Q2净利润4.6亿元
  4. 微信状态可设置QQ音乐 网友:能不能整点实用的?
  5. 工信部:1-2月我国出口手机1.6亿台 同比增加32.6%
  6. 春节档总票房已破50亿 情人节单日票房超14亿
  7. 酸了酸了,BAT过六一的这些礼物都想要
  8. 董明珠宣布开启抖音直播卖货首秀,对刚“半价”直播罗永浩?
  9. 拼多多联合三奇医卫等企业,每天上架1000万只平价口罩
  10. 阿里影业出品影片《1917》斩获奥斯卡多项大奖 有望国内院线上映