千家信息网

LINUX高性能网络通信堵住笔记之UDP数据读写

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,2.UDP数据读写2.1ssize_t recvfrom(int sockfd,const void buf,size_t len,int flags,struct socketaddr src_ad
千家信息网最后更新 2026年11月01日LINUX高性能网络通信堵住笔记之UDP数据读写

2.UDP数据读写
2.1ssize_t recvfrom(int sockfd,const void buf,size_t len,int flags,struct socketaddr src_addr,socklen_t addrlen);
2.2 ssize_t sendto (int sockfd,const void
buf,size_t len,int flags,const struct sockaddr* dest_addr,socklen_t addrlen);
注:recvfrom/sendto 系统调用也可以用于面向连接(STREAM)的socket的数据读写,只需要把最后两个参数设置为NULL
3.通用数据读写

ssize_t recvmsg(int sockfd,struct msghdr msg,int flags)
ssize_t sendmsg(int sockfd,struct msghdr
msg,int flags);

struct msghdr{
void msg_name; //socket地址
socklen_t msg_namelen; // socket地址长度
struct iovec
msg_iov; //分散的内存块
int msg_iovlen; //分散内存块的数量
void* msg_control; //指向辅助数据的起始位置
socklen_t msg_cintrollen; //辅助数据的大小
int msg_flags; //复制函数中的flags参数,并且在调用过程中更新
}

struct iovec{
void *iov_base; //内存起始地址
size_t iov_len; //这块内存的长度
}

4.带外标记

带外数据何时到来?
传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方。为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道。linux系统的套接字机制支持低层协议发送和接受带外数据。但是TCP协议没有真正意义上的带外数据。为了发送重要协议,TCP提供了一种称为紧急模式(urgent mode)的机制。TCP协议在数据段中设置URG位,表示进入紧急模式。接收方可以对紧急模式采取特殊的处理。很容易看出来,这种方式数据不容易被阻塞,并且可以通过在我们的服务器端程序里面捕捉SIGURG信号来及时接受数据。这正是我们所要求的效果。

int sockatmark(int sockfd)

返回1的时候,我们利用带有MSG_OOB标志的recv调用来接收带外数据

如果不是返回0

5.地址信息函数

一个连接socket的本端socket地址和远端的socket地址
int getsocketname(int sockfd,struct sockaddr address,socklen_t address_len)

int getpeername(int sockfd,struct sockaddr address,socklen_t address_len)

6.socket选项

fcntl系统调用是控制文件描述符属性通用POSIX方法

专门设置socket文件描述符属性的方法
int getsockopt(int sockfd,int level,int option_name,void option_value,socklen_t restrict option_len)
int setsockopt()

这一块暂时不写了

数据 地址 内存 重要 模式 系统 函数 参数 对方 属性 文件 方法 机制 通道 长度 起始 辅助 通信 普通 特殊 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手磨咖啡 上海睿民互联网科技有限公司 华服互联网科技怎么样 云之行互联网科技 科技企业和互联网企业 互联网 科技服务平台 互联网科技大会案例 深圳国际航运科技和互联网 互联网之后的科技是什么 彤创互联网科技有限公司 青岛科技大学互联网大赛研究生 广州市恰铎互联网科技有限公司 米聚互联网科技南京有限公司排面 健康食品互联网创新科技园项目 小米互联网科技园入驻 伍佰万互联网科技怎么赚钱 济南小医互联网科技有限公司招聘 世界互联网科技成果奖 互联网科技收购价值 伍佰万互联网科技是干嘛的 广州为想互联网科技有限公司 互联网科技巨头监管 港股互联网科技股 伴你行互联网科技有限公司 一五八零互联网科技 华脉科技工业互联网产品 互联网科技公司实习生 南京一网一红互联网科技有限公司 兰石爱特工业互联网科技分公司 知域互联网科技有限公司官网
0