UDP网络通信

我们知道UDP的通信有一些缺点,但在某些应用领域,例如,即时消息、实时音频信号,更多的强调时效性,特别是对音视频数据的传输,丢失一个数据包一般不会对画像质量产生太大的影响,因此,面向无连接的UDP同样有自己的市场。UDP通信不关心目的主机是否接收该数据包,以及该数据包是否完整无误地传送给对方。

UDP通信过程

UDP通信过程:
这里写图片描述

  1. 调用socket()函数。创建socket对象,指定通信协议UDP
  2. 调用bind()函数。将创建的socket对象与某一个UDP端口绑定
  3. recvfrom、sendto函数实现双方的数据传输
  4. 通信完成后,调用close/shutdown函数关闭socket对象

why?为什么不能用read/write/send/recv函数进行通信?
这是因为UDP不像TCP那样3次握手建立通信链路,UDP通信的socket无法知道目的主机的IP和端口,数据包的目的地址信息需要在sendto调用时以参数方式列出。


sendto

用于向某一主机发送字节序列,与之对应的接收字节序列的函数为recvfrom函数

 ssize_t sendto(int sockfd, //socket的标识符
                const void *buf, //要发送的东西
                int flags,
                const struct sockaddr *dest_addr,//目的地址
                socklen_t addrlen);//长度
recvfrom
ssize_t recvfrom(int sockfd, 
                 void *buf, 
                 size_t len, 
                 int flags,
                 struct sockaddr *src_addr, 
                 socklen_t *addrlen);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值