UDP详解

UDP是什么

  • 英文:User Datagram Protocol,缩写为UDP
  • 一种用户数据报协议,又称用户数据报文协议
  • 是一个简单的面向数据报的传输层协议,正式规范为RFC 768
  • 用户数据协议,非连接协议
为什么不可靠
  • 它一旦把应用层发给网络层的数据发送出去,就不保留数据备份
  • UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)
  • 发送端生产数据,接收端从网络中抓取数据
  • 结构简单、无校验、速度快、容易丢包、可广播
UDP能做什么
  • DNS(域名解析)、TFTP(文件传输协议)、SNMP(网络数据传输过程中监控的协议)
  • 视频、音频、普通数据(无关紧要数据)
UDP包最大长度
  • 2字节存储长度信息
  • 2字节能存储的最大长度是65535,其中自身协议占用64位,即8字节,所以最大发送内容长度是 65535 - 8 个字节

UDP核心API讲解

DatagramSocket
  • 用于接收与发送UDP的类
  • 负责发送某一个UDP包,或者接收UDP包
  • 不同于TCP,UDP并没有合并到Socket API中
  • DatagramSocket()创建简单实例,不指定端口与IP
  • DatagramSocket(int port)创建监听固定端口的实例
  • DatagramSocket(int port, InetAddress, localAddr)创建固定端口指定IP的实例
  • receive(DatagramSocket d):接收
  • send(DatagramSocket d):发送
  • setSoTimeOut(int timeOut):设置超时时间,毫秒
  • close():关闭、释放资源
DatagramPacket
  • 用于处理报文
  • 将byte数组、目标地址、目标端口号等数据包装成报文或者将报文拆卸成byte数组
  • 是UDP的发送实体,也是接收实体
  • DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)
    • 前3个参数指定buf的使用区间
    • 后面2个参数指定目标机器地址与端口
  • DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)
    • 前3个参数指定buf的使用区间
    • SocketAddress相当于InetAddress + Port
  • setData(byte[] buf, int offset, int length)
  • setData(byte[] buf)
  • setLength(int length)
  • getData(), getOffset(), getLength()
  • setAddress(InetAddress address), setPort(int iport)
广播地址
  • 255.255.255.255为受限广播地址
  • C网广播地址一般为:xxx.xxx.xxx.255(比如:192.168.1.255)
  • D类IP地址为多播预留
广播地址运算
  • IP:192.168.124.7
  • 子网掩码:255.255.255.0
  • 网络地址:192.168.124.0,计算方式:IP 和 子网掩码进行 与 运算
  • 广播地址:192.168.124.255,计算方式:网络地址最后一个网段
是不是所有广播地址的最后一位都是255呢?
  • IP:192.168.124.7
  • 子网掩码:255.255.255.192
  • 网络地址:192.168.124.0
  • 广播地址:192.168.124.63
广播地址运算
  • 255.255.255.192 -> 11111111.11111111.11111111.11000000
  • 可划分网段:2*2 (最后一位有几个1,就是几次方) = 4个
  • 0-63、64-127、128-191、192-255
  • 自己的IP设备:192.168.124.7处于第一个网段0-63,第一个网段最后一位就是广播地址,所以广播地址是:192.168.124.63
广播通信问题
  • 主机一:192.168.124.7,子网掩码:255.255.255.192
  • 主机二:192.168.124.100,子网掩码:255.255.255.192,问:这两台主机能通信吗
  • 主机一广播地址:192.168.124.63,主机二广播地址:192.168.124.127,广播地址不一样,不能通信

案例实操-局域网搜索案例

  • UDP接收消息并回送功能实现
  • UDP局域网广播发送实现
  • UDP局域网回送消息实现
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

发飙的蜗牛咻咻咻~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值