inet_addr报错
错误描述
错误 C4996 ‘inet_addr’: Use inet_pton() or InetPton() instead or define _WINSOCK_DEPRECATED_NO_WARNINGS to disable deprecated API warnings
错误原因已经说得比较清楚, inet_addr
是已经被舍弃的API,建议我们使用inet_pton
或者InetPton
替代
解决方案
解决方案有两种
1、规避
直接在使用该函数的文件头加入以下内容进行屏蔽,虽然API已经被舍弃,但是还是可以正常运行
#pragma warning(disable:4996)
2、使用新的API
先假设我们的原先调用方式如下:
const char* ip = "127.0.0.1"struct sockaddr_in addr;...addr.sin_addr.s_addr = inet_addr(ip);
2.1、inet_pton
我们可以先看下对该函数的描述
The InetPton function converts an IPv4 or IPv6 Internet network address in its standard text presentation form into its numeric binary form.
即将我们传入字符值IPv4或IPv6地址转换成对应二进制格式,即如下代码
inet_pton(AF_INET, ip, &addr.sin_addr.s_addr);
//InetPton(AF_INET, (PCWSTR)ip, &addr.sin_addr.s_addr);
AF_INET
表示IPv4地址,ip
就是我们传入的地址,addr.sin_addr.s_addr
就是我们需要保存转换完成之后二进制的地址
第二种方法注意PCWSTR实际上是一个wchar_t,这里强转有时运行时会报地址错误,可自行通过其他方法进行安全转换
inet_addr报错相关推荐
- Visual Studio 2022 配置 ws2_32.lib socket编程 以及error C4996: ‘inet_addr‘ 报错处理
右击项目选择属性 然后依次选择 链接器 输入 附加依赖项 然后点编辑进去 然后就可以进行启动运行项目了 我使用的是Visual Studio 2022,因为也是新手第一次学习socket编程,然后在网 ...
- bug系列(二)release版本DLL报错,debug版本正常
一.链接错误 编译成release版本时,提示 Linking... nafxcw.lib(thrdcore.obj) : error LNK2001: unresolved external sym ...
- 解决gcc报错:error: implicit declaration of function ‘inet_addr’ [-Werror=implicit-function-declaration]
此文首发于我的个人博客:解决gcc报错 error implicit declaration of function 'inet_addr' [-Werror=implicit-function-de ...
- VS2015报错C4996处理
问题: 在vs2015中socket编程时,在编下如下代码时: sockaddr_in clientService;clientService.sin_family = AF_INET;clientS ...
- 编译vs2017项目报错
报错:error C2061: 语法错误: 标识符"BOOL" 解决方案: 添加头文件:#include <WinDef.h> 报错: fatal error C118 ...
- 继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了一篇文章,来解决CORS报错 ...
- Access to XMLHttpRequest at file from origin ‘null‘ has been blocked by CORS policy谷歌浏览器本地打开项目js文件报错
Access to XMLHttpRequest at 'file:///xxxxx/PQ.BaseInfo.proto' from origin 'null' has been blocked by ...
- go build 编译报错 missing go.sum entry for module providing package
go build 编译报错 missing go.sum entry for module providing package 解决方法 // 移除未使用的依赖 go mod tidy 再次编译,就可 ...
- docker报错:driver failed programming external connectivity on endpoint, iptables:No chain by that name
docker 报错: Error response from daemon: Cannot restart container hello: driver failed programming ext ...
最新文章
- mysql model only_full_group_by_MySql版本问题sql_mode=only_full_group_by的完美解决方案
- php插件 pycharm_原来Pycharm中有这么多好用的插件|Pycharm精选插件
- 前端学习(1698):前端系列javascript之原型链和instance
- Linux中fdisk对应的c函数,linux下fdisk命令实战案例之详解
- 计算机基础理论知识的论文,计算机基础毕业论文
- Docker安装Redis(docker-compose.yml)
- 苹果地图副总裁_苹果地图表现糟糕 iOS副总裁福斯特难辞其咎
- HDU1799 循环多少次?【打表】
- 黑马程序猿————OC在Foundation框架结构和字符串
- Refactoring: Encapsulate Collection
- PilotEdit 破解版下载|PilotEdit(文本编辑器) 中文破解版 v11.8下载(含注册机)
- 让子弹飞经典台词|让子弹飞经典语录
- java jdom解析html_Javaweb中使用Jdom解析xml的方法
- [读史思考] 魏王真的被张仪忽悠瘸了吗?
- Python:实现first come first served先到先得算法(附完整源码)
- PR 多轨道字幕设置
- Windows下桌面便签小工具--StickyPad简单使用教程(非StickyNotes)
- matlab k线图快速画出红色阳线绿色阴线
- 东大22春《大学英语(四)》在线平时作业1_100分答案非答案
- 通过PS把月亮“搬”到自己的床上