在使用visual studio开发程序时,使用了inet_ntoa,编译时提示:

严重性    代码    说明    项目    文件    行    禁止显示状态
错误    C4996    'inet_ntoa': Use inet_ntop() or InetNtop() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings    iocpsys    C:\Users\Administrator\source\repos\iocpsys\iocpserver.cpp    19    
上网查阅了一下,inet_ntoa 和inet_ntop函数的区别和共同点:

共同点:两者功能都是将网络地址转换成“.”点隔的字符串格式。

不同点:1.参数数量不同,使用方法有小区别

2.inet_ntoa只适用于ipv4地址,而inet_ntop适用ipv4和ipv6地址

3.前者是旧函数,后者是新函数

inet_ntop函数说明:

PCSTR WSAAPI inet_ntop([in]  INT        Family,[in]  const VOID *pAddr,[out] PSTR       pStringBuf,[in]  size_t     StringBufSize
);

这个函数是随IPv6出现的新函数,对于IPv4地址和IPv6地址都适用。函数名中的p和n非别代表表达(presentation)和数值(numeric)。地址的表达格式通常是ASCII字符串,数值格式则是存放到套接字地址结构中的二进制值。

这个函数的family参数既可以是AF_INET,也可以是AF_INET6。如果以不被支持的地址族作为family的参数,这个函数就会返回一个错误,并将errno置为EAFNOSUPPORT。通过WSAGetLastError可取得错误值。

该函数尝试转换由*pAddr指针所指的二进制值,并通过pStringBuf指针存放字符串结果。StringBufSize是pStringBuf缓冲区大小,以免该函数溢出其调用者的缓冲区。对于ipv4地址,这个缓冲区大小必须大于16个字符,对于ipv6地址,缓冲区必须大于46字符。

在正确转换的情况下,该函数的返回值是一个指向存放转换后字符串的指针。

inet_ntop用法:

引入相关头文件,windows下为:

#include <ws2tcpip.h>

linux下为:

#include<arpa/inet.h>

具体使用代码:

char buff[17];
::inet_ntop(AF_INET,(const void *)&addrRemote.sin_addr,buff,17);
//方法1
printf("转换后ip为:%s",buff);
//或者方法2
printf("转换后ip为:%s",::inet_ntop(AF_INET,(const void *)&addrRemote.sin_addr,buff,17));

inet_pton与 inet_ntop正好相反,将ip字符串转换为二进制值。

inet_ntoa 和inet_ntop函数相关推荐

  1. 【Socket网络编程】3.字节序转换函数htons、htonl ,地址转换函数inet_ntoa、inet_ntop、inet_pton、inet_addr

    字节序转换函数htons.htonl 地址转换函数inet_ntoa.inet_ntop.inet_pton.inet_addr 1.字节序转换函数 #include <arpa/inet.h& ...

  2. linux网络编程之用一张图片说明函数inet_ntop、inet_pton、inet_addr、inet_ntoa 、inet_aton函数之间的关系

    1.inet_ntop.inet_pton.inet_addr.inet_ntoa .inet_aton函数之间的关系 2.inet_ntop.inet_pton函数的源代码 1.inet_pton函 ...

  3. htons/ntohs、inet_aton/inet_ntoa、inet_pton/inet_ntop函数详解

    在介绍htons等函数之前,必须先介绍网络字节序与主机字节序 网络字节序和主机字节序 网络字节顺序NBO(Network Byte Order): 按从高到低的顺序存储,在网络上使用统一的网络字节顺序 ...

  4. inet_pton函数和inet_ntop函数的用法及简单实现

    http://blog.csdn.net/eagle51/article/details/53157643?utm_source=itdadao&utm_medium=referral 这两个 ...

  5. inet_pton()和inet_ntop()函数详解

    1.把ip地址转化为用于网络传输的二进制数值 int inet_aton(const char *cp, struct in_addr *inp); inet_aton() 转换网络主机地址ip(如1 ...

  6. inet_pton、inet_ntop函数

    inet_pton和inet_ntop函数 这两个函数是随IPv6出现的函数,对于IPv4地址和IPv6地址都适用,函数中p和n分别代表表达(presentation)和数值(numeric).地址的 ...

  7. inet_pton和inet_ntop函数

    Linux下这2个IP地址转换函数,可以在将IP地址在"点分十进制"和"整数"之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和 ...

  8. linux内核中使用inet_ntop,linux网络编程之inet_pton和inet_ntop函数

    Linux下这2个IP地址转换函数,可以在将IP地址在"点分十进制"和"整数"之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和 ...

  9. C++中inet_pton、inet_ntop函数

    参考: C++中inet_pton.inet_ntop函数_Promising丶的博客-CSDN博客_c++ inet_ntop 'inet_pton' was not declared in thi ...

最新文章

  1. Android自带的图标集合
  2. android sdk投屏,海豚星空扫码投屏 Android 接收端 SDK 集成 六步骤
  3. [笔记]ndarray切片(python)
  4. java注释日志打印_java 日志文件打印
  5. 库存管理系统软件测试,药房库存管理系统模块测试用例
  6. Go Timer使用方法
  7. 【华为云技术分享】华为开发者大会HDC.Cloud带你探索强化学习三大挑战及落地实践
  8. core 实例化接口_实例讲解Springboot整合MongoDB进行CRUD操作的两种方式
  9. Boxfilter 块滤波器
  10. FileZilla Server + FlashFXP 快速傻瓜式搭建FTP服务
  11. scan VIP listener 详解
  12. fpga板子怎么和电脑连_[笔记].怎样正确插拔FPGA开发板的JTAG仿真器,如USB-Blaster等?...
  13. XHTML的目标,规则和细节
  14. CF679A.Bear and Prime 100 (交互题)
  15. windows10删除EFI分区(绝对安全)
  16. win7系统打开计算机怎么不显示磁盘分区,大师详解win7系统隐藏磁盘分区不显示的具体步骤...
  17. 桌面计算机性能监控系统,监视 Windows 桌面应用的使用情况和性能 - Azure Monitor | Microsoft Docs...
  18. 吉大考博英语是计算机答题吗,2018 吉大考博经历分享
  19. js 的对象--如何定义一个对象
  20. redis 中 Hash哈希介绍 及常用命令 (附有示例)

热门文章

  1. Everything下载安装和使用
  2. 新未来简史:区块链、人工智能、大数据陷阱与数字化生活 - 电子书下载(高清版PDF格式+EPUB格式)...
  3. iOS运行错误:Command /Applications/Xcode 2.app/Contents/Developer/usr/bin/actool failed with exit code 25
  4. Qt编译通过,运行时出现the process was ended forcefully问题的解决方案
  5. python识别火车票二维码_使用python脚本实现查询火车票工具
  6. 雀友腾讯跨界联合 北京打造全球顶级麻将锦标赛
  7. Swiper插件 下载及使用教程
  8. 区块链必读“上链”哲学:“胖链下”与“瘦链上”
  9. Docker入门书籍
  10. 基于Echarts数据可视化地图模块(地图下钻+地图迁徙线)