
| public DatagramPacket(byte[] buf, int length, InetAddress address, int port) | 创建发送端数据包对象 buf:要发送的内容,字节数组 length:要发送内容的字节长度 address:接收端的IP地址对象 port:接收端的端口号 |
| public DatagramPacket(byte[] buf, int length) | 创建接收端的数据包对象 buf:用来存储接收的内容 length:能够接收内容的长度 |
| public int getLength() | 获得实际接收到的字节个数 |
| public DatagramSocket() | 创建发送端的Socket对象,系统会随机分配一个端口号。 |
| public DatagramSocket(int port) | 创建接收端的Socket对象并指定端口号 |
| public void send(DatagramPacket dp) | 发送数据包 |
| public void receive(DatagramPacket p) | 接收数据包 |
创建DatagramSocket对象(发送端对象) 扔韭菜的人
创建DatagramPacket对象封装需要发送的数据(数据包对象) 韭菜盘子
使用DatagramSocket对象的send方法传入DatagramPacket对象 开始抛出韭菜
创建DatagramSocket对象并指定端口(接收端对象) 接韭菜的人
创建DatagramPacket对象接收数据(数据包对象) 韭菜盘子
使用DatagramSocket对象的receive方法传入DatagramPacket对象 开始接收韭菜
释放资源
- /**
- 发送端 一发 一收
- */
- public class ClientDemo1 {
- public static void main(String[] args) throws Exception {
- System.out.println("=====客户端启动======");
-
- // 1、创建发送端对象:发送端自带默认的端口号(人)
- DatagramSocket socket = new DatagramSocket(6666);
-
- // 2、创建一个数据包对象封装数据(韭菜盘子)
- /**
- public DatagramPacket(byte buf[], int length,
- InetAddress address, int port)
- 参数一:封装要发送的数据(韭菜)
- 参数二:发送数据的大小
- 参数三:服务端的主机IP地址
- 参数四:服务端的端口
- */
- byte[] buffer = "我是一颗快乐的韭菜,你愿意吃吗?".getBytes();
- DatagramPacket packet = new DatagramPacket( buffer, buffer.length,
- InetAddress.getLocalHost() , 8888);
-
- // 3、发送数据出去
- socket.send(packet);
-
- socket.close();
- }
- }
- /**
- 接收端
- */
- public class ServerDemo2 {
- public static void main(String[] args) throws Exception {
- System.out.println("=====服务端启动======");
- // 1、创建接收端对象:注册端口(人)
- DatagramSocket socket = new DatagramSocket(8888);
-
- // 2、创建一个数据包对象接收数据(韭菜盘子)
- byte[] buffer = new byte[1024 * 64];
- DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
-
- // 3、等待接收数据。
- socket.receive(packet);
-
- // 4、取出数据即可
- // 读取多少倒出多少
- int len = packet.getLength();
- String rs = new String(buffer,0, len);
- System.out.println("收到了:" + rs);
-
- // 获取发送端的ip和端口
- String ip =packet.getSocketAddress().toString();
- System.out.println("对方地址:" + ip);
-
- int port = packet.getPort();
- System.out.println("对方端口:" + port);
-
- socket.close();
- }
- }