inet_pton与inet_ntop的接口说明

本文详细介绍了如何在Winsock编程中使用`inet_addr`和`inet_pton`函数进行IPv4地址转换,并展示了如何灵活运用`inet_ntoa`获取点分十进制形式。重点在于展示了这两个函数在处理网络地址转换时的技巧和内存操作原理。
摘要由CSDN通过智能技术生成
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include<WinSock2.h>
#include<Ws2tcpip.h>
#include<iostream>

#pragma comment(lib,"ws2_32.lib")
#define IP "192.168.1.102"
int main()
{
	char* pAddress;
	IN_ADDR info{};
	char pBuf[5]{};
	char pRes1[64]{};
	char pRes2[64]{};

	in_addr in{};
	in.S_un.S_un_b.s_b1 = 192;
	in.S_un.S_un_b.s_b2 = 168;
	in.S_un.S_un_b.s_b3 = 1;
	in.S_un.S_un_b.s_b4 = 102;
	DWORD res = inet_addr(IP);//res =0x6601A8C0 【反向对应】结果按小端序 映射到内存 【正向对应】内存再按大端序传到网络的时候 要与IP地址对应
	pAddress = inet_ntoa(in);
    //inet_pton与inet_ntop  比原始的接口更具弹性 其思想是直接使用一段内存代表原来需要代入的整型类型 所以可以代入 in_addr类型 也可以直接代入一个代表该"整型"的内存缓冲区
	inet_pton(AF_INET, IP, (PVOID)&info);//依然按照上述方式填充内存 该函数的"n 整数"即可以是IN_ADDR info代替也可以是一个内存缓冲区代替char pBuf[N],反正只是在万能指针指向的位置开始填充字节,【只截取】填充unsigned long字节大小
	DWORD resp1 = info.S_un.S_addr;
	inet_ntop(AF_INET, &info, pRes1, 64);//直接代入填充好的内存信息即可知道点分十进制IP字符串信息
	//
	inet_pton(AF_INET, IP, pBuf);
	DWORD resp2 = *reinterpret_cast<DWORD*>(pBuf);
	inet_ntop(AF_INET, pBuf, pRes2, 64);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值