构造器 | 说明 |
public DatagramSocket() | 创建客户端的Socket对象, 系统会随机分配一个端口号。 |
public DatagramSocket(int port) | 创建服务端的Socket对象, 并指定端口号 |
方法 | 说明 |
public void send(DatagramPacket dp) | 发送数据包 |
public void receive(DatagramPacket p) | 使用数据包接收数据 |
- //创建客户端的Socket对象, 系统会随机分配一个端口号。
- DatagramSocket socket = new DatagramSocket();
构造器 | 说明 |
public DatagramPacket(byte[] buf, int length, InetAddress address, int port) | 创建发出去的数据包对象 |
public DatagramPacket(byte[] buf, int length) | 创建用来接收数据的数据包 |
方法 | 说明 |
public int getLength() | 获取数据包,实际接收到的字节个数 |
- //创建发出去的数据包对象
-
- Scanner sc = new Scanner(System.in);
- while(true){
- System.out.println("msg :");
- String msg = sc.nextLine();
-
- if("exit".equals(msg)){
- System.out.println("退出成功!");
- //释放资源
- socket.close();
-
- break;
- }
-
- byte[] bytes = msg.getBytes();
- DatagramPacket packet = new DatagramPacket(bytes, bytes.length,
- InetAddress.getLocalHost(), 6000);
-
- //发送数据包
- socket.send(packet);
- }
- //创建服务端的Socket对象, 并指定端口号
- DatagramSocket socket = new DatagramSocket(6000);
-
- //创建用来接收数据的数据包
- byte[] buffer = new byte[1024 * 64];
- DatagramPacket packet = new DatagramPacket(buffer, buffer.length));
-
- while(true){
- //使用数据包接收数据
- socket.receive(packet);
-
- //获取数据包,实际接收到的字节个数
- int len = packet.getLength();
-
- String rs = new String(buffer, 0, len);
- System.out.println(rs);
-
- packet.getAddress().getHostAddress();
- packet.getPort();
-
- }
UDP的接收端可以接收很多发送端的消息的原因:接收端只负责接收数据包,无所谓是哪个发送端的数据包。