[VC] IP地址的字符串形式与整数互换

  IPV6出现之后,在windows平台,最好是用随IPV6而出的新函数实现IP地址的字符串形式与整数互换。这些新函数是InetPton和InetNtop。

1  InetPton()

  作用:该函数实现字符串到整数的转换。

  原型:INT InetPton(INT Family, PCWST pszAddrString,  PVOID pAddrBuf);

  参数:family参数既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6)。如果,以不被支持的地址族作为family参数,这个函数都返回一个错误,并将errno置为EAFNOSUPPORT.

       strptr 存放IP地址的字符串

       addrptr 存放IP地址的整数的指针

  返回:若成功则为1,若输入不是有效的表达式则为0,若出错则为-1

  例子:
      ULONG address;
      InetPton(AF_INET, "192.168.1.1", &address);

2  InetNtop()

  作用:该函数实现整数到字符串的转换。

  原型:PCWST InetNtop(INT Family, const void * pAddr, PWSTR pStringBuf, size_t StringBufSize);

  参数:family参数既可以是AF_INET(ipv4)也可以是AF_INET6(ipv6)。如果,以不被支持的地址族作为family参数,这个函数都返回一个错误,并将errno置为EAFNOSUPPORT.
       pAddr 存放IP地址的整数的指针,

       pStringBuf 存放IP地址的字符串,

       StringBufSize 字符串的长度

  返回:存放IP地址的指针。如果StringBufSize太小,不足以容纳表达式结果,那么返回一个空指针,并置为errno为ENOSPC。

  例子:
      ULONG address = 。。。;
      wchar_t ip[64];

      InetNtop(AF_INET, &address, ip, 64);

原文地址:https://www.cnblogs.com/wxxujian/p/12684379.html

时间: 2024-11-14 14:23:31

[VC] IP地址的字符串形式与整数互换的相关文章

JAVA中如何将整数表示的ip地址转换为字符串表示

/** * 将整数表示的ip地址转换为字符串表示. * * @param ip 32位整数表示的ip地址 * @return 点分式表示的ip地址 */public static final String long2Ip(final long ip) {      final long[] mask = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 };      final StringBuilder ipAddress = new Stri

JAVA将整数表示的ip地址转换为字符串表示

/** * 将整数表示的ip地址转换为字符串表示. * * @param ip 32位整数表示的ip地址 * @return 点分式表示的ip地址 */ public static final String long2Ip(final long ip) { final long[] mask = { 0x000000FF, 0x0000FF00, 0x00FF0000, 0xFF000000 }; final StringBuilder ipAddress = new StringBuilder

阿里云ECS网络服务器配置网站,内网上能够访问,公网ip不能访问,或者选择ip时没有公网ip地址为字符串

最近租了一个阿里云服务器,想挂几个网站上去玩玩.在iis上配置好网站后,在服务器上用内网可以打开,但是通过公网ip不能访问.我的配置情况如下 因为主机是专有网络,服务器内部看不到公网ip,直接的选择全部未分配,不会影响外网来访问网站. 可是这样配置好后,就出现了内网可以访问外网不能访问的问题. 于是我通过本机的控制台去ping 公网ip能够ping通,那么说明公网没有问题可以正常访问.那么就有可能是端口被服务器给禁止了.通过百度阿里云的端口设置,搜索到了配置安全组可以解决端口问题,于是抱着试一试

MySQL如何有效的存储IP地址及字符串IP和数值之间如何转换

mysql> select inet_aton('192.168.0.1'); +--------------------------+ | inet_aton('192.168.0.1') | +--------------------------+ |               3232235521 | +--------------------------+ 1 row in set (0.00 sec) mysql> select inet_ntoa(3232235521); +--

IP地址字符串与BigInteger的转换

/**  * Copyright (c) 2010, 新浪网支付中心  *      All rights reserved.  *  * Java IP地址字符串与BigInteger的转换,  * 支持IPv6  *  */ import java.math.BigInteger; import java.net.InetAddress; import java.net.UnknownHostException; /**  * IP转换大数进行比较工具  *  * @author [emai

识别字符串中的整数并转换为数字形式

识别字符串中的整数并转换为数字形式(40分) 问题描述: 识别输入字符串中所有的整数,统计整数个数并将这些字符串形式的整数转换为数字形式整数. 要求实现函数: void take_num(const char *strIn, int *n, unsigned int *outArray) [输入] strIn:   输入的字符串 [输出] n:       统计识别出来的整数个数 outArray:识别出来的整数值,其中outArray[0]是输入字符串中从左到右第一个整数, outArray[

利用位操作进行IP地址的转化

1)IPv4地址是一个32位的二进制数,通常被分割位4个“8位二进制数”,为了方便,通常使用“点分十进制”的形式表示成(a.b.c.d)的形式,其中,a,b,c,d都是0~255之间的十进制整数,另外,IP地址也可以使用一个3的整数T表示,根据点分十进制中的a,b,c,d,计算T的方法就是: T=a*256*256*256+b*256*256+c*256+d; 2)那么如何根据T反求出此IP地址的“点分十进制”形式呢?题目描述: IP地址的长度为32,即有2^32-1个地址.IP地址一般采用点分

[Leetcode] restore ip address 存储IP地址

Given a string containing only digits, restore it by returning all possible valid IP address combinations. For example:Given"25525511135", return["255.255.11.135", "255.255.111.35"]. (Order does not matter) 题意:给定一由纯数字组成的字符串,以

IP地址进阶

1.分子网 为了解决相对比较简单的两层结构IP地址带来的问题,RFC917和RFC950提出了一个叫做分子网的(subnetting)的解决方案.RFC950中规范的分子网方法能使A.B.C类IP地址再细分为更小的网络号.一个被子网化的IP地址包括三部分:Ÿ 网络号Ÿ 子网号Ÿ 主机号具体做法是把主机部分一分为二,用一部分用于识别子网,一部分用于标识主机,所以分子网的能力依赖于被子网化的IP地址类型.即A类的大于B类,B类的大于C类.如:一个C类地址 2.子网掩码和ip地址 由于分子网的需要,导