UDP通讯相关以及与epoll结合的回射服务器

本文介绍了UDP协议的特点,如无连接、不可靠传输,并指出其在音视频通话、网络直播等场景的应用。UDP避免了TCP的粘包问题,每个数据包在接收端缓冲区独立保存。考虑到丢包、乱序等问题,实现时需要添加额外机制。标准UDP数据报大小限制在548字节内,超过则需分片。文章还提供了使用UDP与epoll结合的回射服务器端和客户端代码示例。
摘要由CSDN通过智能技术生成

UDP属于用户数据报协议,属于传输层协议。提供面向无连接的、不可靠的传输,没有拥塞控制和超时重传机制。相对于TCP面向连接的,提供可靠传输的传输层协议,UDP也有其应用场景。UDP在首部开销小,传输速度快的优点,应用也很广泛比音视频通话,网络直播,游戏中帧同步等等。

不同于TCP这样的流式套接字,对于UDP不用处理粘包问题。UDP是面向报文的,对应用层交付的报文,直接添加协议头就交付给IP层,不会对报文进行合并或者拆分,保留了报文的边界。所以接收端的socket缓冲区采用链式结构保存每一个到达的UDP数据包,这样接收端一次recv只能从缓冲区读出一个数据包,而不用处理粘包问题。

UDP协议作为不可靠的传输,可能会出现丢包,乱序等问题。使用时需要实现数据包确认机制,丢包重传机制,数据包排序机制,另外尽量不发送大于路径MTU的数据包。

单个UDP传输的最大内容是1472字节,由于不同的网络中转设备设置的MTU不同。而Internet上标准MTU值为576,除去IP头和UDP头(576-20-8)等于548,所以我们发送的UDP数据报要控制在548字节之内。如果超了需要在发送端对UDP数据包进行分片发送,在接收端再进行组合。

下面是用UDP与epoll结合使用,实现的回射服务器。

服务器端 udp_epoll.cpp

#include <stdio.h> 
#include &l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值