Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183107
  • 博文数量: 67
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 622
  • 用 户 组: 普通用户
  • 注册时间: 2014-11-19 19:12
文章分类

全部博文(67)

分类: LINUX

2014-12-15 15:08:19


1、udp和tcp可以分别绑定到同一个端口

    yes,比如DNS可以同时支持tcp和udp,端口都是53
    注意与SO_REUSEADDR的区别

2、udp也可以调用connect
    yes,如此即只收取connect指定的远端ip和端口发来的数据
    此处connect不会触发三次握手,所以如果对端不可达,只有调用send时才会收到错误信息,而tcp在connect时就会收到不可达的错误

3、udp接收缓冲区满则将后续数据直接丢弃,无提示
    yes,

4、recvfrom可以在udp上分多次读取一个数据包
    no,对于UDP协议,若一次无法读取完一个数据包,则该数据包的其他数据被丢弃。
    比如,发端缓冲区32字节,收端缓冲区16字节,若发端发了20个字节数据,则收端通过一次recvfrom只能得到16个字节(受限于接收缓冲区),其余4个被丢弃。


5、sendto可以发送长度为0的数据包,即recvfrom正常可返回0
    yes
    长度为0的数据包只有一个ip头和一个udp头而没有数据。
    tcp的read如果返回0则表示对端关闭了连接

6、只有udp支持多播可广播,tcp不支持
    yes,因为广播和多播不建立连接,而且也不能建立连接,比如ARP

阅读(1721) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~