2025年6月5日 星期四 乙巳(蛇)年 三月初九 设为首页 加入收藏
rss
您当前的位置:首页 > 计算机 > 编程开发 > 数据结构与算法

tcp/ip中的 ip字符串转整数函数 inet_aton 源代码

时间:12-11来源:作者:点击数:24
城东书院 www.cdsy.xyz

tcp/ip中的 ip字符串转整数函数 inet_aton 源代码

  • // ip地址结构体
  • struct in_addr
  • {
  • unsigned int s_addr; // network byte order( big-endian)
  • };
  • // inet_aton将 点分十进制串cp 转换为一个网络字节顺序的32位整数 IP地址
  • // 例如将串cp "192.168.33.123 "
  • // 转为 1100 0000 1010 1000 0010 0001 0111 1011
  • // 成功返回1,出错返回0
  • // 转换成功,结果保存在结构体指针ap中
  • int inet_aton(const char *cp, struct in_addr *ap)
  • {
  • int dots = 0;
  • register u_long acc = 0, addr = 0;
  • do {
  • register char cc = *cp;
  • switch (cc)
  • {
  • case '0':
  • case '1':
  • case '2':
  • case '3':
  • case '4':
  • case '5':
  • case '6':
  • case '7':
  • case '8':
  • case '9':
  • acc = acc * 10 + (cc - '0');
  • break;
  • case '.':
  • if (++dots > 3)
  • {
  • return 0;
  • }
  • // Fall through
  • case '/0':
  • if (acc > 255)
  • {
  • return 0;
  • }
  • addr = addr << 8 | acc; // 这句是精华,每次将当前值左移八位加上后面的值
  • acc = 0;
  • break;
  • default:
  • return 0;
  • }
  • } while (*cp++) ;
  • // Normalize the address
  • if (dots < 3)
  • {
  • addr <<= 8 * (3 - dots) ;
  • }
  • //Store it if requested
  • if (ap)
  • {
  • ap->s_addr = htonl(addr);
  • }
  • return 1;
  • }
城东书院 www.cdsy.xyz
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门
本栏推荐