网络编程-UDP

UDP

  在使用socket时需要手动传入两个参数

  第一个 AF_INET,第二个 SOCK_DGRAM

  UDP 不需要建立连接,所以没有三次握手和四次挥手

UDP与TCP的相同点:
  服务器:都需要绑定端口和ip

      recv与recvfrom都有阻塞功能

UDP与TCP的不同点:

  服务器:UDP不需要监听和接受请求

      TCP服务器默认只能和一个客户端进行通讯

      下一个客户端必须等到上一个断开连接才能被处理

      UDP多个客户端的请求会被依次处理

  客户端:不需要建立连接直接发送即可

      可以发送空消息

  在UDP中客户端和服务器

    接收都是recvfrom

    发送都是sendto

UDP不会产生粘包问题

  接收方的缓冲区大小即使大于发送方发送的数据长度也不会粘包

  当接收方缓冲区的程度小于数据报的数据长度,Windows会报异常,而Linux不会

  UDP在使用时,必须保证接收的缓冲区大小大于或等于发送的数据报大小

  由于缓冲区的大小不可能无限大,所以UDP不适合在数据量较大的情况下使用

  如果一定要使用UDP来传输大量数据的话,需要自己对数据进行切割和组装

  UDP最大的数据报,受数据帧大小限制,最大为1472字节

  在传输数据量较大时推荐使用TCP

原文地址:https://www.cnblogs.com/LinChengcheng/p/10471065.html