一、Server端:(发送端)
1.创建DatagramSocket对象,并指定一个端口,不指定就自动分配一个;
2.创建一个数据报包类DatagramPacket对象,
3.调用DatagramSocket的send方法发送数据包;
4.关闭流;
import java.io.IOException;
import java.net.*;
public class UdpServer {
public static void main(String[] args) {
try{
//1.创建DatagramSocket对象,并指定一个端口,不指定就自动分配一个;
DatagramSocket ds=new DatagramSocket(3000);
String str="Hello,word";
//2.创建一个数据报包类DatagramPacket对象,
DatagramPacket dp=new DatagramPacket(str.getBytes(),str.length(), InetAddress.getByName("localhost"),8001);
System.out.println("发送信息");
//3.调用DatagramSocket的send方法发送数据包;
ds.send(dp);
ds.close();
} catch (SocketException e) {
e.printStackTrace();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
二、Client端:(接收端)
1.创建UDP的socket
2.创建数据包对象,指定接收的对象及长度;
3.DatagramSocket的receive方法接收数据包;
4.解析数据包;
5.关闭流;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UdpClient {
public static void main(String[] args) throws IOException {
byte[] bytes=new byte[1024];
//1.创建UDP的socket
DatagramSocket ds=new DatagramSocket(8001);
//2.创建数据包对象,指定接收的对象及长度;
DatagramPacket dp=new DatagramPacket(bytes,1024);
System.out.println("等待接收数据");
//3.DatagramSocket的receive方法接收数据包;
while(true){
ds.receive(dp);
//4.解析数据包
String str=new String(dp.getData(),0,dp.getLength())+"数据来自"+dp.getAddress().getHostAddress()+":"+dp.getPort();
System.out.println(str);
}
//5.关闭流
//ds.close();
}
}