网络编程相关结构体整理

本文详细梳理了网络编程中涉及的套接字类型,包括流套接字、数据报套接字和原始套接字。同时介绍了相关的数据结构,如sockaddr和sockaddr_in,以及内核中接收/发送数据的struct msghdr和struct iovec。此外,还讲解了netlink socket的消息头nlmsghdr和消息地址sockaddr_nl,以及控制信息头部struct cmsghdr的相关内容。
摘要由CSDN通过智能技术生成

常用的套接字类型有3种:
  (1)流套接字(SOCK——STREAM):使用了面向连接的可靠的数据通信方式,即TCP协议;
  (2)数据报套接字(Raw Sockets):使用了不面向连接的数据传输方式,即UDP;
  (3)原始套接字(SOCK——RAW):没有经过处理的IP数据包,可以根据自己程序的要求进行封装。

1、套接字相关的数据类型:sockaddr和sockaddr_in;sockaddr用来保存一个套接字,定义如下:
struct sockaddr
{
unsigned short int sa_family; //指定通信地址类型,如果是TCP/IP通信,则值为AF_inet
char sa_data[14]; //最多用14个字符长度,用来保存IP地址和端口信息
};
struct sockaddr是通用的套接字地址,而struct sockaddr_in则是internet环境下套接字的地址形式,二者长度一样,都是16个字节。二者是并列结构,指向sockaddr_in结构的指针也可以指向sockaddr。一般情况下,需要把sockaddr_in结构强制转换成sockaddr结构再传入系统调用函数中。
struct sockaddr_in
{
unsigned short int sin_family; //指定通信地址类型
uint16_t sin_port; //套接字使用的端口号
struct in_addr sin_addr; //需要访问的IP地址
un

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值