目录
关于网络编程这一块会涉及一些关于计算机网络的知识,包括网络分层、网络协议、端口号、IP地址等,不了解的地方可以自己查阅了解一下。这里简单的提一下主机字节序列和网络字节序列。
主机字节序列
主机字节序列分为大端字节序和小端字节序,不同的主机采用的字节序列可能不同。大端字节序是高位字节存储在内存低地址,低位字节存储在高地址;而小端则是高位字节存储在高地址,低位字节存储在低地址处。
这就会产生一个问题:在使用两台主机传递数据时,如果两台主机的主机字节序不同,那么就可能产生冲突。所以就引出了网络字节序列。
网络字节序列
在将数据发送到网络时规定整形数据使用大端字节序,所以把大端字节序称为网络字节序列
Linux 系统提供如下 4 个函数来完成主机字节序和网络字节序之间的转换:
套接字地址
套接字:通过网络进行数据收发
套接字地址一般是一组数组
通用socket地址结构
#include<bits/socket.h>
struct sockaddr
{
sa_family_ sa_family;
char sa_data[14];
};
地址族类型通常与协议族类型对应,常见的协议族和对应的地址族如下:
专用socket地址结构
TCP/IP协议族有sockaddr_in和sockaddr_in6两个专用sock