DatagramSocket
用于发送和接收UDP的类,发送或接收一个UDP的包。
UDP是没有客户端与服务器端的概念,DatagramSocket即是你的服务端又是你的客户端。
构造函数:
- DatagramSocket() 创建简单实例,不指定IP 和 端口,用它来发送UDP时,会往本机的随机的一个端口发数据。
- DatagramSocket(int port) 监听固定端口,此端口时接收数据的端口
- DatagramSocket(int port,InetAddress localAddr) 监听固定端口固定IP
DatagramSocket 方法
- receive(DatagramPacket d) ; 接收一个UDP, DatagramPacket是UDP报文封装类。
- send(DatagramPacket d); 发送一个UDP
- setSoTimeout(int timeout); 设置监听或者发送超时时间
- close(); 释放资源
DatagramPacket
用于处理报文,将byte数组、目标端口等包装成报文,或者将报文拆解成byte数组。是UDP的发送实体也是接收实体。
- DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port) ; buf 传输数据, offset、length有效区间 ,address目标地址,port目标端口。发送时有效。
- DatagramPacket(byte[] buf,int offset,int length,SocketAddress address); SocketAddress相当于InetAddress+port的封装
DatagramPacket方法
- setData(byte[] buf,int offset,int length); 当构造函数选无参时,可以用DatagramPacket.setData(buf,offset,length);来初始化
- setData(byte[] buf);默认从0开始到buf结束
- setLength(int length) 设置buf有效长度
- setAddress(InetAddress iadder) 、 setPort(int port) 、setSocketAddress(SocketAddress address),SocketAddress是InetAddress+port
- getData()、getLength()、getOffset()、getAddress、getPort()、getSocketAddress()
set…仅在发送的时候起作用,在接收时系统会解析出ip 、 port然后set进InetAddress、port我们get 就可以知道是哪个电脑哪个端口发来的消息。