标题UDP协议特点
?
\bullet
? UDP是一种无连接、不可靠传输的协议。
?
\bullet
? 将数据源IP,目的地IP和端口以及数据封装成数据包,大小限制在64KB内,直接发送出去即可。 DatagramPacket:数据包对象
构造器 | 说明 |
---|
public DatagramPacket(byet[] buf,int length, InetAddress address,int port) | 创建发送端数据包对象 buf:要发送的内容,字节数组。length:要发送内容的字节长度。address:接收端的IP地址对象。port:接收端端口号 | public DatagramPacket(byet[] buf,int length) | 创建接收端的数据包对象 buf:用来存储接受的内容。 length:能接收内容的长度。 |
DatagramSocket:发送端和接收端对象
构造器 | 说明 |
---|
public DatagramSocket() | 创建发送端的socket对象,系统随机分配一个端口号。 | public DatagramSocket(int port) | 创建接收端的Socket对象并指定端口号 |
DatagramSocket类成员方法
方法 | 说明 |
---|
public void send(DatagramPacket dp) | 发送数据包 | public void receive(DatagramPacket p) | 接收数据包 |
UDP 一发 一收
接收端代码
package com.lp.d2_udp1;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class ServerDemo2 {
public static void main(String[] args) throws Exception {
System.out.println("=======服务端启动=======");
DatagramSocket socket=new DatagramSocket(8888);
byte[] buffer=new byte[1024*64];
DatagramPacket packet=new DatagramPacket(buffer, buffer.length);
socket.receive(packet);
int length=packet.getLength();
String rs=new String(buffer,0,length);
System.out.println("收到了:"+rs);
String ip=packet.getSocketAddress().toString();
System.out.println(ip);
socket.close();
}
}
发出端代码
package com.lp.d2_udp1;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class ClientDemo1 {
public static void main(String[] args) throws Exception {
System.out.println("=======客户端启动========");
DatagramSocket socket=new DatagramSocket();
byte[] buffer="诸天气荡荡,我道日兴隆".getBytes();
DatagramPacket packet=new DatagramPacket(buffer, buffer.length, InetAddress.getLocalHost(),8888);
socket.send(packet);
socket.close();
}
}
|