UPDP是无连接的传输层协议
,所以我们先收后发
先写接收端
package udp;
import java.beans.beancontext.BeanContext;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPReceDemo {
public static void main(String[] args) throws IOException {
/*
* 创建udp接收端
* 创建socket服务,明确端口
* 收数据
* 将其中所需要的数据取出来 ip,date,端口
* 关闭资源
*/
System.out.println("接收端启动了。。。");
//1
DatagramSocket ds =new DatagramSocket(8888);
//2使用socket接收数据,需要将收到的数据存到数据包中,
//可以通过数据包对象的方法对收到的数据进行解析
//2.1 创建一个数据包
byte[] buf= new byte[1024];
DatagramPacket dp=new DatagramPacket(buf,buf.length);
ds.receive(dp);
//3 通过数据包对象解析收到的数据,使用数据包的方法
String ip=dp.getAddress().getHostAddress();
int port=dp.getPort();
String str=new String(dp.getData(),0,dp.getLength());
System.out.println(ip+"..."+port+"..."+str);
}
}
然后是发送端
package udp;
import java.io.IOException;
import java.net.*;
public class UDPSwndDemo {
public static void main(String[] args) throws IOException {
/*
*需求:建立 udp的发送端
*
* 1、建立可以实现udp传输的socket服务。
* 2、明确发送的数据
* 3、通过socket服务将具体的数据发送出去
* 4、关闭服务
* */
System.out.println("UDP发送端启动。。。");
//1、
DatagramSocket datagramSocket=new DatagramSocket(8888);
//2
String str="注意。UdP commig";
//3 发送数据,将数据封装到数据包中
//3.1 将数据封装到数据包对象中,数据包会明确目的地址和端口
byte[] buf=str.getBytes();
DatagramPacket dp=new DatagramPacket(buf,buf.length,
InetAddress.getByName("这里填写对应的主机ip地址"),10000);
//发送
datagramSocket.send(dp);
datagramSocket.close();
}
}