#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;
}
inet_pton与inet_ntop的接口说明
最新推荐文章于 2023-07-13 20:29:22 发布
本文详细介绍了如何在Winsock编程中使用`inet_addr`和`inet_pton`函数进行IPv4地址转换,并展示了如何灵活运用`inet_ntoa`获取点分十进制形式。重点在于展示了这两个函数在处理网络地址转换时的技巧和内存操作原理。
摘要由CSDN通过智能技术生成