TCP网络编程基础
1、套接字结构
struct sockaddr { /*通用套接字地址结构*/
sa_family_t sa_family; /*协议族*/
char sa_data[14]; /*协议族数据*/
}
上述结构中协议族成员变量sa_family的类型是sa_family_t,其实这个类型是unsigned short类型,因此成员变量sa_family的长度为16位。
typedef unsigned short sa_family_t;
通用套接字结构可以在不用的协议之间进行强制转换。在网络程序设计中所使用的函数中几乎所有的套接字函数都用这个结构作为参数。
struct sockaddr_in { /* 以太网套接字地址结构*/
u8 sin_len; /* 结构struct sockaddr_in的长度,16*/
u8 sin_family; /* 通常为AF_INET*/
u16 sin_port; /* 16位的端口号,网络字节序*/
struct in_addr sin_addr; /* IP地址32位结构*/
char sin_zero[8]; /* 未用*/
}
结构struct sockaddr_in的成员in_addr用于表示IP地址。
struct in_addr {/* IP地址结构*/
u32 s_addr;/* 32位IP地址,网络字节序*/
}