• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
指尖上的快乐
博客园    首页    新随笔    联系   管理    订阅  订阅

linux第9天 UDP

今天学了一点UDP知识,还是IP协议.都不是重点,重点是socket服务器框架

不过还是把今天学的东西,先罗列出来,将来复习的时候方便

 

q  UDP报文可能会丢失、重复

q  UDP报文可能会乱序

q  UDP缺乏流量控制

udp缓冲区写满以后,没有流量控制机制,会覆盖缓冲区。

q  UDP协议数据报文截断

如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失。

q  recvfrom返回0,不代表连接关闭,因为udp是无连接的。

sendto可以发送数据0包。。。只含有udp头部。

q  ICMP异步错误

观察现象:关闭udp服务端,若启动udp客户端,从键盘接受数据后,再发送数据。udp客户端阻塞在sendto位置;

//说明1:udp发送报文的时,只把数据copy到发送缓冲区。在服务器没有起来的情况下,可以发送成功。

说明2:所谓ICMP异步错误是指:发送的报文的时候,没有错误,接受报文recvfrom的时候,回收到ICMP应答

说明3:异步的错误,是无法返回未连接的套接字。udp也可以调用connect

q  UDP connect

说明1://udp调用connet,并没有三次握手,只是维护了一个状态信息(和对等方的)。。。

 

说明2)//一但调用connect,就可以使用send函数

 

 

 

结论:客户端调用connet和不调connet的区别。

1)  udp也可以调用connet

2)udp客户端调用了connect以后,不会阻塞在recvfrom函数这里。

3)一但调用connect,就可以使用send函数

4)  UDP协议数据报文截断

 

如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失。

 

 

实验1

//数据报方式。。。。不是字节流

         //如果接受数据时,指定的缓冲区的大小,较小;

         //剩余部分将要截断,扔掉

实验2:

 

sendto可以发送0包,只含头部。

 

UDP注意点

q  UDP报文可能会丢失、重复

q  UDP报文可能会乱序

q  UDP缺乏流量控制

udp缓冲区写满以后,没有流量控制机制,会覆盖缓冲区。

q  UDP协议数据报文截断

如果接收到的数据报,大于缓冲区;报文可以被截断;后面的部分会丢失。

q  recvfrom返回0,不代表连接关闭,因为udp是无连接的。

sendto可以发送数据0包。。。只含有udp头部。

q  ICMP异步错误

观察现象:关闭udp服务端,若启动udp客户端,从键盘接受数据后,再发送数据。udp客户端阻塞在sendto位置;

//说明1:udp发送报文的时,只把数据copy到发送缓冲区。在服务器没有起来的情况下,可以发送成功。

说明2:所谓ICMP异步错误是指:发送的报文的时候,没有错误,接受报文recvfrom的时候,回收到ICMP应答

说明3:异步的错误,是无法返回未连接的套接字。udp也可以调用connect

q  UDP connect

说明1://udp调用connet,并没有三次握手,只是维护了一个状态信息(和对等方的)。。。

说明2)//一但调用connect,就可以使用send函数

posted @ 2016-03-09 15:49  指尖上的快乐  阅读(504)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3