3.4.1 有关的数据结构
(1)表示套接字的数据结构struct socket
struct socket
{
socket_state state; /* 指明套接字的连接状态*/
unsigned long flags;
struct proto_ops ops; /* 指明可对套接字进行的各种操作 */
struct inode inode; /* 指向sockfs文件系统中的相应inode */
struct fasync_struct *fasync_list; /*异步唤醒队列*/
struct file *file; /* 指向sockfs文件系统中的相应文件*/
struct sock sk; /*指向特定协议族的套接字对象。 */
wait_queue_head_t wait;
short type;
unsigned char passcred;
};
一个套接字的连接状态可以有以下几种:套接字是空闲的,还没有进行相应的端口及地址的绑定;还没有连接;正在连接中;已经连接;正在解除连接。
(2)描述套接字通用地址的数据结构struct sockaddr
struct sockaddr{
sa_family_t sa_family; /* address family, AF_xxx */
char sa_data[14]; /* 14 bytes of protocol address*/
};
(3)描述因特网地址结构的数据结构struct sockaddr_in(这里局限于IP4)
struct sockaddr_in
{
__SOCKADDR_COMMON (sin_); /* 描述协议族 */
in_port_t sin_port; /* 端口号 */
struct in_addr sin_addr; /* 因特网地址 */
/* Pad to size of `struct sockaddr'. */
unsigned char sin_zero[sizeof (struct sockaddr) –
__SOCKADDR_COMMON_SIZE –
sizeof (in_port_t) –
sizeof (struct in_addr)];
};
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。