#千锋逆战班,计算机网络#
********************************命运从不偏袒任何人**********************************
却会垂怜认真生活的人,对未来的真正慷慨,是把一切献给现在,总有一天,你会惊艳时光
****************************即无人能替,又光芒万丈******************************
今天是在千锋逆战班学习计算机网络的第二天,学习了字节序的转换、点分十进制字符串和网络大端数据的转换、udp的简单编程,下面分享一下今天的学习
1、字节序
一般我们个人的电脑默认都是小端存储的,一些大的服务器和网络上的数据都是大端存储的,如果我们要发送数据到网络上就需要考虑到大小端的转换,转换我们需要用到的函数有如下几种:
(1) htonl函数
uint32_t htonl(uint32_t hostint32);
功能:
将32位主机字节序数据转换成网络字节序数据
参数:
hostint32:待转换的32位主机字节序数据
返回值:
成功:返回网络字节序的值
头文件:
#include <arpa/inet.h>
(2) htons函数
uint16_t htons(uint16_t hostint16);
功能:
将16位主机字节序数据转换成网络字节序数据
参数:
uint16_t:unsigned short int
hostint16:待转换的16位主机字节序数据
返回值:
成功:返回网络字节序的值
头文件:
#include <arpa/inet.h>
(3)ntohl函数
uint32_t ntohl(uint32_t netint32);
功能:
将32位网络字节序数据转换成主机字节序数据
参数:
uint32_t: unsigned int
netint32:待转换的32位网络字节序数据
返回值:
成功:返回主机字节序的值
头文件:
#include <arpa/inet.h>
(4) ntohs函数
uint16_t ntohs(uint16_t netint16);
功能:
将16位网络字节序数据转换成主机字节序数据
参数:
uint16_t: unsigned short int
netint16:待转换的16位网络字节序数据
返回值:
成功:返回主机字节序的值
头文件:
#include <arpa/inet.h>
2、点分十进制字符串和网络大端数据的转换
转换函数有:
(1)#include <arpa/inet.h>
int inet_pton(int af, const char *src, void *dst);
功能:
将一个点分十进串转为32位的大端数据
参数:
af: 协议 AF_INET (ipv4)
src: 待转的点分十进制串
dst: 保存32位大端数据的地址
返回值:
成功返回1 0 和-1 都是失败
(2)#include <arpa/inet.h>
const char *inet_ntop(int af, const void *src, char *dst, socklen_t size);
函数功能:
将网络4字节的大端数据转为点分十进制串
参数:
af: 协议 AF_INET (ipv4)
src: 待转的32位大端数据
dst:保存点分十进制串的地址
size:dst指向那块空间的大小
成功:则返回字符串的首地址
失败:返回NULL
3、udp的简单编程
udp编程,我们需要用到套接字socket,socket的作用是提供不同主机上的进程之间的通信
下面提供一个简单案例