UDP网络编程原理示意图
UDP说明:
package com.study.srv.demo18;import java.io.IOException;
import java.net.*;/*** @author Wen先森* @version 1.0* @date 2022/7/18 14:03* UDP发送端*/
public class Demo11 {public static void main(String[] args) throws IOException {//1.创建DatagramSocket对象,准备发送和接收数据,在9998端口接收DatagramSocket datagramSocket = new DatagramSocket(9998);//2.将需要发送的数据,封装到DatagramPacket对象String s="发送的数据";byte[] buf=s.getBytes();InetAddress ip = InetAddress.getByName("192.168.0.18");//说明:封装的DatagramPacket对象//buf 内容字节数组//buf.length 数据长度//ip 主机(ip)//9999 端口DatagramPacket packet = new DatagramPacket(buf, buf.length, ip, 9999);//发送数据datagramSocket.send(packet);//关闭资源
// datagramSocket.close();System.out.println("发送完毕");//发送端变为接收端接收数据byte[] bytes = new byte[1024];DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length);datagramSocket.receive(datagramPacket);int length = datagramPacket.getLength();byte[] data = datagramPacket.getData();String string = new String(data, 0, length);System.out.println(string);datagramSocket.close();System.out.println("接受结束");}
}
package com.study.srv.demo18;import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;/*** @author Wen先森* @version 1.0* @date 2022/7/18 14:03*UDP接收端*/
public class Demo10 {public static void main(String[] args) throws IOException {//1.创建一个 DatagramSocket对象,准备在9999接收数据DatagramSocket datagramSocket = new DatagramSocket(9999);//2.构建一个DatagramPacket 对象,准备接收数据//在UDP协议,一个数据包最大64kbyte[] buf=new byte[1024];DatagramPacket packet = new DatagramPacket(buf, buf.length);//3.接收方法 将通过网络传输的DatagramPacket对象填充到packet里去。System.out.println("接收端等待接收");datagramSocket.receive(packet);//4.可以对packet进行拆包,取出数据,并显示//实际接收到的数据字节长度int length = packet.getLength();//实际接收到的数据byte[] data = packet.getData();String string = new String(data, 0, length);System.out.println(string);//5.关闭资源
// datagramSocket.close();System.out.println("接收结束");//接收端变为发送端,发送数据String s="接收端变为发送端,发送数据";byte[] bytes=s.getBytes();DatagramPacket datagramPacket = new DatagramPacket(bytes, bytes.length, InetAddress.getByName("192.168.0.18"), 9998);datagramSocket.send(datagramPacket);datagramSocket.close();System.out.println("发送完毕");}
}