inet_ntop使用注意事项

Linux·网络编程套接字(三) 网络编程套接字(三) 阅读详情

windows平台,用C++写了一个控制台模式的网络服务程序,开启TCP监听,

等待客户端连接后推送数据,结构并不复杂,本地测试OK。

等发布到服务器上运行时,发生了诡异的现象,弹出控制台窗口后,程序就被阻塞了……

为了搞清楚阻塞在哪个位置,在一些可疑之处cout输出,结果一个都没有显示。

后来再发布调试版,连main的第一行cout都没输出,开始怀疑人生了……

于是将所有代码逻辑屏蔽,只留一个空壳和cout输出,没有任何问题,看来还是代码导致,

就这样,一点点放开代码,最后定位到inet_ntop这个函数,编码时的确在其和inet_ntoa之间犹豫了一下,

因为这个函数较新且能同时支持ipv4和ipv6,所以也没多想。

谁知这个小小的函数将花费我几个小时来追踪定位。

后来查阅资料得知,该函数需要windows2008以上服务器系统才能正常使用,

而部署的服务器正是一台老旧的2003系统,大概是程序启动时加载库函数发生了某种异常,

奇怪的是这中异常没有任何提示,而是弹开窗口后静静的,

什么也不做,什么也不说,也不崩溃,但你却崩溃了!!!

虽然现在仍在使用17年前的操作系统的人再没谁了,但是这件事情仍然能得到一些启示:

1 在使用新函数代替旧函数时注意查阅确认适用平台版本

2 在较早的操作系统发布程序,很多程序异常(特别是测试时没问题)跟系统版本有关

inet_ntop()函数的概念和使用案例 阅读详情

相关推荐

网络地址翻译官——`inet_ntop`函数

五、使用示例(续) 示例2:转换IPv6地址(续) memcpy(ipv6_bin.s6_addr, addr_bytes, 16); // 2. 准备目标缓冲区 char ipv6_str[INET6_ADDRSTRLEN]; // 3. 调用inet_ntop转换 const char *result = inet_ntop(AF_INET6, &ipv6_bin, ipv6_str, INET6_ADDRSTRLEN); // 4. 检查结果 if (result == NULL) { fprintf

weixin_42108533的博客 1436

inet_pton()和inet_ntop()功能及使用方法

inet_pton()和inet_ntop()功能及使用方法 这两个函数是随IPv6出现的函数,对于IPv4地址和IPv6地址都适用,函数中p和n分别代表表达(presentation)和数值(numeric)[^1]。 inet_pton() 功能: 将标准文本表示形式的IPv4或IPv6 Internet网络地址转换为数字二进制形式。 参数: INT WSAAPI inet_pton( INT Family, //地址家族 IPV4使用AF_INET IPV6使用AF_INET6 P

weixin_38420191的博客 3万+

使用PaddleOCR识别查验平台验证码

PaddleOCR识别国税查验平台验证码

m0_63932300的博客 1269

inet_pton()和inet_ntop()函数详解

inet_ntoa 函数转换网络字节排序的地址为标准的ASCII以点分开的地址,该函数返回指向点分开的字符串地址(如192.168.1.10)的指针,该字符串的空间为静态分配的,这意味着在第二次调用该函数时,上一次调用将会被重写(复盖),所以如果需要保存该串最后复制出来自己管理!(2)第一个函数尝试转换由strptr指针所指向的字符串,并通过addrptr指针存放二进制结果,若成功则返回值为1,否则如果所指定的family而言输入字符串不是有效的表达式格式,那么返回值为0.

木牛的博客 8226

[官方培训]07-UE材质基础 孙丹璐 Epic 笔记

勾选允许自定义深度写入再在模型上勾选然后可以通过Scene Texture节点拿到渲染的自定义深度信息,有了自定义深度信息就可以与当前渲染的像素深度进行对比,自定义深度信息存放的是最靠近我们的深度,如果当前像素离自定义深度比较远我们就不要这个像素。效果如下这种方案的缺点也很明显,因为这样看不到第二层的透明了,如果是两层的半透明的裙摆,这样就看不到第二层的裙摆了。对于半透明排序问题最根本能解决的还是光线追踪,ue5中又加入了OIT(基于像素的排序)。官方透明材质的理解和应用。

Tcohneyn的博客 1562

LLMOps的崛起:如何利用Langfuse和Opik构建高效的模型监控与评估体系

本文探讨了LLMOps的崛起,详细介绍了如何利用Langfuse和Opik构建高效的模型监控与评估体系。通过开源工具Langfuse的全景监控方案和Opik的三层评估体系,帮助AI工程团队实现大语言模型的全生命周期管理,提升模型性能和迭代效率。文章还提供了实战技巧和工具链集成方案,助力企业优化AI应用。

ll5678的博客 680

网络编程之inet_pton,inet_ntop,sock_ntop函数

inet_pton         inet_pton函数转换由strptr指针所指的字符串,并通过addrptr指针存放二进制结果。若成功则为1,若输入不是有效的表达式格式则为0,若出错则为-1; int inet_pton(int family, const char* strptr, void* addrptr) { if (family == AF_INET) { st

雪儿的专栏 6576

在macOS上使用GitHub的超详细指南

GitHub:免费的远程仓库,可用来托管自己的开源项目。它利用了Git强大的克隆和分支功能,让我们参与别人的开源项目和让别人参与自己的开源项目变得简单高效。

Mars的博客 3391

inet-pton和Inet-ntop函数的区别

Linux下这2个IP地址转换函数,可以在将IP地址在“点分十进制”和“整数”之间转换 而且,inet_pton和inet_ntop这2个函数能够处理ipv4和ipv6。算是比较新的函数了。 inet_pton函数原型如下[将“点分十进制” -> “整数”] #include #include #include int inet_pton(int af, const char

ihujian的博客 1586

HFSS15 win10_64位破解

HFSS15 win10_64位破解 找到的别人的软件,但在首次安装时失败了,并不能patched。寻找了几种方法,已成功安装。在此写下安装经验,供大家参考。 软件安装包以及破解软件: 链接:https://pan.baidu.com/s/1MMjV_31maU5QD6fmI4zfIA 提取码:yj4q 在安装之前,建议关闭杀毒软件。 Step1:进入HFSS150Win64安装包,点击au...

玉笙寒 4万+

Hyper-V集群部署指南

工欲善其事,必先利其器。搭建一个方便管理的服务集群,是分布式学习很重要的环境。 目前流行的虚拟机产品主要为Vmware 和 win10自带的Hyper-V(win10家庭版无此功能),网上关于Vmware的教程更多,显然它更容易上手,但Hyper-V也算是一个很不错的产品,这里记录一下我的学习过程: 目录 Hyper-V的安装 服务集群的搭建 虚拟机的网络通信 NAT网络的搭建 端口映射 Linux的静态IP 虚拟机的自启动问题 Hyper-V的安装 也不能算说是安装,如果你的win1

Swing 6919

网络编程:inet_ntoa inet_aton inet_ntop和inet_pton分不清楚

/****************************************************************************************************************** 原文地址:http://hi.baidu.com/kwokwing0011/item/9d3729dfedb1d6e63cc2cbe6 说明:inet_ntoa i

Android/Linux的专栏 4946

单反相机物镜设计[DG-10]

REAR(要打在像面,操作数要找像面对应位置15):以透镜单位表示的真实光线径向坐标,波长由Wave定义,参见“Hx、Hy、Px和Py”。最小玻璃厚度最小不能小于semi-dia的1/10,要根据layout看有没有过厚过薄,反复调节。PROD:两个操作数的乘积(操作#1 X操作#2)。3x4就是57.3x0.41=23.5。拦光一般在第一面和最后一面操作,减少边缘无用光线。光阑面与镜面贴近,要调距离,同时设置光阑像差。后截距是指从镜头后表面到焦点的距离。CONS:弧度转为角度。镜头相互嵌入,有错误。

weixin_72050316的博客 600

inet aton在java_地址转换函数:inet_aton & inet_ntoa & inet_addr和inet_pton & inet_ntop

在Unix网络编程中,我们常用到地址转换函数,它将ASCII字符串(如"206.62.226.33")与网络字节序的二进制值(这个值保存在套接口地址结构中)间进行地址的转换。1、inet_aton、inet_addr和inet_ntoa在点分十进制数串(例如"206.62.226.33")与它的32位网络字节序二进制值间转换IPv4地址。2、两个较新的函数:inet_pton和inet_ntop对...

weixin_35995835的博客 469

ABAP CDS View 从入门到精通教程目录:ABAP CDS View 在 SAP 技术体系中的重要地位

学习 ABAP CDS View 的开发技术,体会其背后的设计理念,也就掌握了 SAP S/4HANA 底层数据模型的设计精髓。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 4777

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【网络编程】inet_addr、inet_ntoa、inet_aton、inet_ntop和inet_pton区分

先上一张图 1.把ip地址转化为用于网络传输的二进制数值 int inet_aton(const char *cp, struct in_addr *inp); inet_aton() 转换网络主机地址ip(如192.168.1.10)为二进制数值,并存储在struct in_addr结构中,即第二个参数*inp,函数返回非0表示cp主机有地有效,返回0表示主机地址无效。(这...

Lesroad 578

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IP地址转换函数

1、概念 基于IPv4的socket网络编程,sockaddr_in中的成员struct in_addr sin_addr表示32位 的IP 地址。网络字节顺序的IP地址是二进制的数据,但是通常用点分⼗进制的字符串表⽰IP 地址,为了方便使用需要转换为点分十进制的字符串。例如:128.2.194.242就是地址0x8002c2f2的点分十进制表示。应用程序可以使用以下库函数实现IP地址与点分十进制串的转换,它们存放在<arpa/inet.h>头文件中。 2、IP地址转换函数 (1)int ine

编程鸟 2842

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【Socket中 IP地址转换(inet_ntop、inet_pton)、字节序(htons(), htonl(), ntohs(), 和 ntohl() )】

二进制网络地址和点分十进制文本之间的转换;大端字节序(网络)和小端字节序(可能是主机)之间的转换;

一起学习进步! 891

浅析gethostbyname函数

    最近在学习unix/linux的socket编程的时候,使用了struct hostent *gethostbyname(const char *name);虽然给我的程序移植性带来了一定的好处,但是与此同时可带了一些副作用。本片文章将主要描述使用此函数时候的注意点,希望能够网友带来一些启迪。    gethostbyname将返回一个struct hostent的指针,这个结构定义如下:

燕青专栏 2万+

Linux高性能服务器5.1.1

第五章 基础api第一个测试判断大端模式还是小端模式实现第一个测试 判断大端模式还是小端模式 实现<netinet/in.h>中的大小端转换 实现地址api函数 5.1.1 测试一个2字节的short的两种转换; int main(int argc,char **argvv){ unsigned short int x=0x1a2b; printf("%x\n",htons(x));...

weixin_39583140的博客 353

避免踩坑--网传二进制数值和点分十进制ip之间的转换

1.把ip地址转化为用于网络传输的二进制数值 int inet_aton(const char *cp, struct in_addr *inp); inet_aton() 转换网络主机地址ip(如192.168.1.10)为二进制数值,并存储在struct in_addr结构中,即第二个参数*inp,函数返回非0表示cp主机有地有效,返回0表示主机地址无效。(这个转换完后不能用于网络传输,还需要调用htons或htonl函数才能将主机字节顺序转化为网络字节顺序) in_addr_t inet_addr(

weixin_43763259的博客 1393

nvarchar转换为numeric时出错_Unix网络编程-地址转换函数(2)

IPV4地址转换函数函数原型:#include<arpa/inet.h>int inet_aton(const char* , struct in_addr* ); 返回:若字符串有效则为1,否则为0in_addr_t inet_addr(const char* ); 返回:若字符串有效则为32位二进制网络字节序的IPV4地址,否则为INADDR_...

weixin_39641697的博客 86

判断ipv6地址_Unix网络编程-地址转换函数(2)

IPV4地址转换函数函数原型:#include<arpa/inet.h>int inet_aton(const char* , struct in_addr* ); 返回:若字符串有效则为1,否则为0in_addr_t inet_addr(const char* ); 返回:若字符串有效则为32位二进制网络字节序的IPV4地址,否则为INADDR_...

weixin_31293685的博客 357

字符串地址转换为sockaddr_in

注意:inet_pton函数用于处理IPv4和IPv6地址,而inet_ntoa函数用于将in_addr结构体转换回点分十进制字符串形式。这段代码定义了一个str_to_sockaddr_in函数,它接受一个字符串形式的IP地址和一个整型的端口号,然后将它们转换为sockaddr_in结构体。在main函数中,我们调用这个函数并打印出转换结果。printf(“转换成功: IP=%s, Port=%d\n”, inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));

qq_43559669的博客 687

字符串 IP 地址和二进制 IP 地址的转换

人类理解的IP地址表达方式是类似127.0.0.1这样的字符串;而计算机理解的则是像0111111100000000 00000000 00000001 (127.0.0.1)这样表达的 IP 地址方式。在网络程序的设计中,经常需要进行字符串表达方式的 IP 地址和二进制的 IP 地址之间的转换,将对此类函数进行介绍............

xuwaiwai的博客 3802
上一篇: visual studio 安装 python工具插件
下一篇: Matlab在线工具
UU_Yang
博客等级 码龄23年 926粉丝 213原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值