网络安全编程——IP地址字节顺序转换——inet_addr()、inet_ntoa()
2016-06-05 18:59
447 查看
inet_addr()函数
一般看的IP地址都是十进制点制字符串格式的,例如xxx.xxx.xxx.xxx,但在网络传输的是一个32位的数字,并不是常用的字符串形式。
inet_ntoa()函数
把整型的IP地址转成字符串形式
#include "stdafx.h"
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
char *ipstr = "192.168.1.3";
unsigned long ipu;
ipu = inet_addr(ipstr);//将10进制地址转成网络传输(整数)的格式
printf("%s->%u\n" ,ipstr ,ipu);
char *ipstr1 = NULL;
in_addr ipa;
ipa.S_un.S_addr = 50440384;
ipstr1 = inet_ntoa(ipa);//将网络传输(整数)的格式转成10进制地址
printf("%d->%s\n",ipa.S_un.S_addr,ipstr1);
system("pause");
return 0;
}
下图是整数转成字符串的
一般看的IP地址都是十进制点制字符串格式的,例如xxx.xxx.xxx.xxx,但在网络传输的是一个32位的数字,并不是常用的字符串形式。
inet_ntoa()函数
把整型的IP地址转成字符串形式
#include "stdafx.h"
#include<WinSock2.h>
#pragma comment(lib,"ws2_32.lib")
int _tmain(int argc, _TCHAR* argv[])
{
char *ipstr = "192.168.1.3";
unsigned long ipu;
ipu = inet_addr(ipstr);//将10进制地址转成网络传输(整数)的格式
printf("%s->%u\n" ,ipstr ,ipu);
char *ipstr1 = NULL;
in_addr ipa;
ipa.S_un.S_addr = 50440384;
ipstr1 = inet_ntoa(ipa);//将网络传输(整数)的格式转成10进制地址
printf("%d->%s\n",ipa.S_un.S_addr,ipstr1);
system("pause");
return 0;
}
下图是整数转成字符串的