Socket网络编程 2 之UDP协议

Socket网络编程 2

Socket-UDP 快速入门

UDP是什么?
  • 英文名:User Datagram Protocol,缩写为UDP
  • 一种用户数据报协议,又称用户数据报文协议
  • 是一个简单的面向数据报传输层协议,正式规范为RFC 768
  • 用户数据协议、非连接协议
为什么说UDP不可靠?
  • 它一旦把应用程序发送给网络层的数据发送出去,就不保留数据备份
  • UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)
  • 发送端生成数据,接收端从网络中抓取数据
  • 结构简单,无校验,速度快,容易丢包,可广播
UDP能做什么?
  • DNS,TFTP,SNMP
  • 视频,音频,普通数据(无关紧要数据)
    在这里插入图片描述
UDP包最大长度
  • 16位->2字节 存储长度信息
  • 2^16-1=64K-1=65536-1=65535
  • 自身协议占用:32+32位=64位=8字节
  • 65535-8=65507byte
UDP核心API
DatagramSocket
  • 用于接收与发送UDP的类
  • 负责发送某一个UDP包,或者接收UDP包
  • 不同于TCP,UDP并没有合并到Socket API中
  • DatagramSocket()创建简单实例,不指定端口与IP
  • DatagramSocket(int port)创建监听固定端口的实例
  • DatagramSocket(int port,InetAddress localAddr)创建固定端口指定IP的实例
  • receive(DatagramPacket d):接收
  • send(DatagramPacket d):发送
  • setSoTimeout(int timeout):设置超时,毫秒
  • close():关闭,释放资源
DatagramPacket
  • 用于处理报文
  • 将byte数组,目标地址,目标端口等数据包装成报文或者将报文拆卸成byte数组
  • 是UDP的发送实体,也是接收实体
  • DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)
  • 前三个参数指定buf的使用区间
  • 后面2个参数指定目标机器地址与端口
  • DatagramPacket(byte[] buf,int offset,int length,SocketAddress address)
  • SocketAddress相当于InetAddress+Port
  • setData(byte[],int offset,int length)
  • setData(byte[] buf)
  • setLength(int length)
  • getData(),getOffset(),getLength()
  • setAddress(InetAddress iaddr),setPort(int iport) 发送时有效
  • getAddress(),getPort()
  • setSocketAddress(SocketAddress address) 发送时有效
  • getSocketAddress()
UDP单播、广播、多播
  • 单播:点对点
  • 多播:给一组用户发送,组播
  • 广播:给所有设备发送信息
IP地址类别

在这里插入图片描述

广播地址
  • 255.255.255.255为受限广播地址
  • C网广播地址一般为:xxx.xxx.xxx.255(192.168.1.255)
  • D类IP地址为多播预留
IP地址构成

在这里插入图片描述

广播地址运算
  • IP:192.168.124.7
  • 子网掩码:255.255.255.0
  • 网络地址:192.168.124.0
  • 广播地址:192.168.124.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=4个
  • 0~63,64~127,~128-191,192-255
  • 广播地址: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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值