2024/03/13(网络编程·day1)

发布于:2024-03-14 ⋅ 阅读:(68) ⋅ 点赞:(0)

一、思维导图

二、主机字节序转换为网络字节序(大端存储)函数 htonl  htons

网络字节序转换为主机字节序 函数  ntohl  ntohs

#include<myhead.h>
int main(int argc, const char *argv[])
{
	//主机字节序转换为网络字节序
	
	int num_h = 0x12345678;//定义四字节整数
	short value_h = 0x1234;//定义两字节整数

	int num_n = htonl(num_h);//将num_h转换为网络字节序
	int value_n = htons(value_h);//将value_h转换为网络字节序

	printf("num_n = %#x,value_n = %#x\n",num_n,value_n);

	//网络字节序转换为主机字节序
	
	int num2_n = 0x89674523;//定义四字节整数
	int value2_n = 0x6745;//定义两字节整数

	int num2_h = ntohl(num2_n);//将num2_n转换为主机字节序
	int value2_h = ntohs(value2_n);//将value2_n转换为主机字节序

	printf("num2_h = %#x,value2_h = %#x\n",num2_h,value2_h);
	return 0;
}

三、IP地址点分十进制转换为4字节无符号整数的无符号网络字节序 函数 inet_addr

4字节无符号整数的无符号网络字节序转换为点分十进制IP地址 函数 inet_ntoa

#include<myhead.h>
int main(int argc, const char *argv[])
{
	struct in_addr addr;
	char *ip_str;

	//将点分十进制表示的IP地址存储到结构体中(4字节无符号整数的网络字节序)
	addr.s_addr =inet_addr("192.168.117.93");

	//输出网络字节序
	printf("IP_n = %#x\n",addr.s_addr);

	//将网络字节序转换为主机字节序
	printf("IP_h:%#x\n",ntohl(addr.s_addr));

	//将4字节无符号整数的网络字节序转换为点分十进制
	ip_str = inet_ntoa(addr);

	printf("IP:%s\n",ip_str);

	return 0;
}


网站公告

今日签到

点亮在社区的每一天
去签到