import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; //UDP接受数据:因为不知道什么时候发送停止,采用死循环接收 public class ReceiveDemo { public static void main(String[] args) throws IOException { //创建接收端的Socket对象(DatagramSocket) DatagramSocket ds = new DatagramSocket(12345); //死循环接受数据 while(true) { //创建一个数据包,用于接受数据 byte[] bys = new byte[1024]; DatagramPacket dp = new DatagramPacket(bys, bys.length); //调用DatagramSocket对象的方法接受数据 ds.receive(dp); //解析数据包,并把数据在控制台显示 System.out.println("数据是" + new String(dp.getData(), 0, dp.getLength())); } //关闭接收端 // ds.close(); } }
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; /*UDP发送数据: 数据来自于键盘录入,直到输入的数据是886,发送数据结束 * * * */ public class SendDemo { public static void main(String[] args) throws IOException { //创建发送端的Socket对象(DatagramSocket) DatagramSocket ds = new DatagramSocket(); //自己封装键盘录入数据 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line; while((line = br.readLine())!=null){ //输入的数据是886,发送数据结束 if("886".equals(line)){ break; } //创建数据,并把数据打包 byte[] bys = line.getBytes(); DatagramPacket dp = new DatagramPacket(bys,bys.length, InetAddress.getByName("192.168.1.66"),12345); //调用DatagramSocket()对象的方法发送数据 ds.send(dp); } //关闭发送端 ds.close(); } }
B站学习笔记,感谢黑马!
下面是学习链接:黑马程序员全套Java教程_Java基础入门视频教程,零基础小白自学Java必备教程_哔哩哔哩_bilibili