diff --git a/s-day11/src/com/inmind/udp02/Demo02.java b/s-day11/src/com/inmind/udp02/Demo02.java index e45fb53..21b3873 100644 --- a/s-day11/src/com/inmind/udp02/Demo02.java +++ b/s-day11/src/com/inmind/udp02/Demo02.java @@ -25,7 +25,7 @@ DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象 int getLength() 返回要发送的数据的长度或接收到的数据的长度 需求:使用UDP实现快速通信,实现1发1收 - +客户端的实现 */ public class Demo02 { public static void main(String[] args) throws Exception { @@ -34,7 +34,9 @@ public class Demo02 { //2.创建数据包对象,封装要发出去的数据(创建一个飞饼) byte[] bytes = "我爱java,java爱我".getBytes(); - DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),10022); +// DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),10022); + DatagramPacket packet = new DatagramPacket(bytes,bytes.length, + InetAddress.getByName("192.168.23.174"),10022); //3.客户端正式发送这个数据包出去 socket.send(packet); System.out.println("客户端数据发送完毕~~"); diff --git a/s-day11/src/com/inmind/udp02/Demo03.java b/s-day11/src/com/inmind/udp02/Demo03.java new file mode 100644 index 0000000..79010d4 --- /dev/null +++ b/s-day11/src/com/inmind/udp02/Demo03.java @@ -0,0 +1,41 @@ +package com.inmind.udp02; + +import java.net.DatagramPacket; +import java.net.DatagramSocket; + +/* +作为UDP服务端,接收客户端发送的数据 + +在java中使用DatagramSocket来表示UDP的客户端和服务端 +构造方法 +DatagramSocket(int port) 创建服务端的Socket对象,并指定端口号。 + +常用方法: +void receive(DatagramPacket p) 使用数据包接收数据 + +DatagramPacket :数据包 +DatagramPacket(byte[] buf, int length) 创建接收数据的数据包对象 +int getLength() 返回要发送的数据的长度或接收到的数据的长度 + +需求:创建服务器,接收客户端的数据 + */ +public class Demo03 { + public static void main(String[] args) throws Exception { + System.out.println("服务端启动了....."); + //1.创建服务端的对象(并指定端口号) + DatagramSocket socket = new DatagramSocket(10022); + //2.创建出一个数据包对象,用于接收数据(飞饼) + byte[] bytes = new byte[64 * 1024];//64KB + DatagramPacket packet = new DatagramPacket(bytes, bytes.length); + + //3.服务器开始正式使用数据包,接收客户端的数据 + socket.receive(packet);//阻塞方法,等待客户端发送的数据 + //4.获取数据包的ip地址,和端口号 + int length = packet.getLength();//获取数据包中字节数据的长度 + String result = new String(bytes, 0, length); + System.out.println(packet.getPort());//获取数据包的端口 + System.out.println(packet.getAddress().getHostAddress());//获取数据包的IP地址 + System.out.println(result); + socket.close();//服务器资源释放 + } +}