Linux网络编程之UDP

一、概述
UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是一个简单的面向数据报的运输层协议,在网络中用于处理数据包,是一种无连接的协议。UDP 不提供可靠性的传输,它只是把应用程序传给 IP 层的数据报发送出去,但是并不能保证它们能到达目的地。由于 UDP 在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快。

二.UDP 有如下的特点
1)邮件系统服务模式的抽象(可通过邮件模型来进行对比)
2)每个分组都携带完整的目的地址
3)发送数据之前不需要建立链接
4)不对数据包的顺序进行检查,不能保证分组的先后顺序
5)不进行分组出错的恢复和重传
6)不保证数据传输的可靠性

三.UDP 客户端程序
对比于写信模型,客户端相当于寄信人,要想成功给人寄信,信封上必须写上对方的地址。
ssize_t sendto(int sockfd,
const void *buf,
size_t nbytes,
int flags,
const struct sockaddr *to,
socklen_t addrlen );
功能:
向 to 结构体指针中指定的 ip,发送 UDP 数据,可以发送 0 长度的 UDP 数据包
参数:
sockfd:套接字
buf:发送数据缓冲区
nbytes:发送数据缓冲区的大小
flags:一般为 0
to:指向目的主机地址结构体的指针
addrlen:to 所指向内容的长度
返回值:
成功:发送数据的长度
失败: -1

四.UDP 服务器程序
UDP网络程序想要收取数据需什么条件?
1)确定的 ip 地址
2)确定的端口(port)
这正如,我要收到别人寄过来的信,我必须告诉别人我的地址(ip),同时告诉别人我我的公寓信箱号(端口)。

接收端使用 bind() 函数,来完成地址结构与 socket 套接字的绑定,这样 ip、port 就固定了,发送端在 sendto 函数中指定接收端的 ip、port,就可以发送数据了。

需要头文件:#include

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值