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

本文介绍了如何在C语言中使用htonl,htons,ntohl,ntohs函数进行主机字节序与网络字节序的转换,以及使用inet_addr和inet_ntoa函数处理IP地址的点分十进制和无符号网络字节序转换。
摘要由CSDN通过智能技术生成

一、思维导图

二、主机字节序转换为网络字节序(大端存储)函数 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;
}

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值