分配给套接字的IP地址和端口号
IP->:收发网络网络数据而分配给计算机的值
端口号->:区分程序套接字而分配给程序的序号
网络地址
此部分大家可以自从从网络搜去,本文章只列出网络编程所需要的基本知识。
- IPV4
- IPV6
网络地址分类与主机地址边界
- A 首字节范围:0-127(0)
- B 首字节范围:128-191(10)
- C 首字节范围:191-223(110)
用于区分套接字的端口号
- 端口号与套接字是一一对应关系,端口号与程序的不同通信功能是一一对应关系
- 同一通信协议端口号不可重复使用
- 不同协议的端口号可以重复使用(TCP和UDP)
地址的信息表示
下面我们讨论ipv4的地址表示。声明:还是那句话代码很老,没必要记,我们只是通过最原始的代码了解网络编程基础。
struct sockaddr_in
{
sa_family_t sin_family;//地址族
unit16_t sin_port //16位TCP/UDP端口号
struct in_addr sin_addr //32位IP地址
char sin_zero[8]//不使用为了与bind参数强制转换时地址对齐
}
struct in_addr
{
int_addr_t s_addr;
}
struct sockaddr_in serv_addr;
bind(...;(struct sockaddr*)&serv_addr;...)
//sockaddr 定义如下
struct sockaddr
{
sa_family_t sin_family;
char sa_data[14];//地址信息
}
网络字节序与地址转换
字节序与网络字节序
字节序转换
此部分内容大家自行在网络上搜寻即可
数据在传输之前都要经过转换吗
没必要,具体原因之后结合程序详细讲解。
网络地址的初始化与分配
此部分简单了解即可,大部分网络库都给我们封装好了,只不过是一些编程方式,不涉及很多理论知识。
客户端地址初始化
需要注意客户端是通过connect函数初始化服务器端的地址与端口,连接到服务器的ip与端口。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。