Socket可以看成是用户进程与内核网络协议栈的编程接口
Socket不仅可以用于本机的进程间通信,还可以用于网络上不同主机间的通信。
IPv4套接口地址结构
IPv4套接口地址结构通常也称为“网际套接字地址结构”,它以“sockaddr_in”命名,定义在头文件中<netinet/in.h>
struct sockaddr_in{
uint8_t sin_len;//整个sockaddr_in结构体长度
sa_family_t sin_family;//指定该地址家族,在这里必须设为AF_INET
in_port_t sin_port;//端口
struct in_addr sin_addr;//IPV4地址
char sin_zero[8];//暂不使用,一般设置为0;
}
通用地址结构
通用地址结构用来指定与套接字关联的地址
struct sockaddr{
uint8_t sin_len;//整个sockaddr结构体的长度
sa_family_t sin_family;//指定该地址家族
char sa_data[14];//14,有sin_family决定他的形势
}
上面两个地址结构的大小是相等的。
端口号是什么?
一台主机可以用一个ip来标识,那么主机中的进程用什么标识呢,用端口号。知名端口号0到1023分配给了一些固定服务,比如FTP:21、HTTP:80等等。1024到65535动态分配,应用程序的区分用端口号。
字节序
int a=0x12345678
大端模式:
数值小的放到高位,大端模式
小端模式:
数值大的放到低位,小端模式
那么如何测试自己电脑什么模式呢?
int main() {
int a = 0x12345678;</