本案例演示两个类之间的通讯
1 package NetWork; 2 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 import java.net.InetAddress; 6 7 public class Udp_Demo { 8 public static void main(String[] args) { 9 10 } 11 } 12 13 /* 14 * UDP发送端 UDP传输 1.DatagramSocket与DatagramPacket 2.建立发送端,接收端 3.建立数据包; 15 * 4.调用Socket的发送接收方法 5.关闭Socket 发送端与接收端是两个独立的运行程序 16 * 17 * 需求:通过udp传输方式,将一段文字数据发送出去 1.建立UDPsocket服务 2.提供数据,并将数据封装到数据包中 18 * 3.通过socket服务的发送功能,将数据包发送出去 4.关闭资源 19 */ 20 21 /* 22 * 编写一个类,做为UDP的发送端; 23 */ 24 class UdpOut { 25 public static void main(String[] args) throws Exception { 26 // 1.创建UDPSocket服务,通过DatagrameSocket对象, 27 DatagramSocket ds = new DatagramSocket(); 28 29 // 2.确定数据,并且封装成数据包 30 byte[] data = "maple".getBytes(); // 确定数据,将字符使用getBytes()方法转换成字节数据,存放在数组里面去 31 32 // 创建一个DatagramPacket包中,将数据data数据封装进去,长度是data.length, 33 // 发送地址是InetAddress.getByName("192.168.1.101"),端口号是:4443; 34 DatagramPacket dp = new DatagramPacket(data, data.length, InetAddress.getByName("192.168.1.101"), 4443); 35 36 // 3.通过DatagramSocket服务的send方法 ,将已经封装好的数据包发送出去 37 ds.send(dp); 38 39 // 4.关闭资源 40 ds.close(); 41 } 42 } 43 44 /* 45 * 编写一个类,做为UDP的接收端 需求:定义一个应用程序,肜于接收UDP协议传输的数据并处理 46 * 1.定义一个UDP的Socket服务 47 * 2.定义一个数据包,用来存储接收到数据包,该数据包中有更多的功能可以提取字节数据包中的不同数据信息 48 * 3.通过Socket服务的receive方法将数据存入到已经定义好的数据包中 49 * 4.通过数据包对象的特有功能,将这些不同的数据取出 5.关闭资源 50 */ 51 class UdpReceive { 52 public static void main(String[] args) throws Exception { 53 // 创建UDP的Socket服务,建立端点,在建立接收端的时候,一般都会监听一个端口 54 DatagramSocket ds = new DatagramSocket(4443); 55 56 // 2.定义一个数据包,用来存储数据的 57 byte[] buf = new byte[1024]; // 创建一个数组,用来存储数据 58 DatagramPacket dp = new DatagramPacket(buf, buf.length); 59 60 // 3.通过服务的receive方法将收到的数据存入 61 ds.receive(dp); 62 63 // 4.通过数据包的方法,获取其中的数据 64 65 // 获取IP地址,调用getAddress返回来一个InetAddress对象,再调用对象的getHostAddress返回来一个字符串 66 String ip = dp.getAddress().getHostAddress(); 67 68 // dp.getData(),0,dp.getLength()调用dp的getData方法 69 // ,获取数据,从0开始获取,直到dp.getLength的最大长度,并且将获取到的字节转换成字符;存储到变量中 70 String value = new String(dp.getData(), 0, dp.getLength()); 71 72 // 获取端口号 73 int port = dp.getPort(); 74 75 System.out.println("ip:" + ip + "; 端口:" + port + ";数据:" + value); 76 } 77 }