版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014155085/article/details/83819252
1.服务器端代码
package udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* 类功能描述:服务器端,先启动服务器端后启动客户端
*
* @author:***
* @createTime:2018/11/7 10:07
*/
public class Server {
public static void main(String[] args) {
try {
/**
* 接收客户端数据
*/
//1.创建服务器端datagramSocket
DatagramSocket socket = new DatagramSocket(18081);
//2.创建数据报,用于接收客户端发送的数据
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
System.out.println("服务器已经启动,等待客户端发送数据:");
//3.接收客户端发送的数据(接收数据报之前一直阻塞)
socket.receive(packet);
//4.读取客户端发送的数据
String info = new String(data, 0, packet.getLength());
System.out.println("接收客户端发送信息为:" + info);
/**
* 向客户端响应数据
*/
InetAddress address = packet.getAddress();
byte[] resData = "服务器响应信息".getBytes();
DatagramPacket resPacket = new DatagramPacket(resData, resData.length, address, packet.getPort());
socket.send(resPacket);
System.out.println("向客户端发送数据成功!");
} catch (Exception e) {
e.printStackTrace();
}
}
}
2.客户端代码
package udp;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Socket;
/**
* 类功能描述:客户端
*
* @author:***
* @createTime:2018/11/7 10:14
*/
public class Client {
public static void main(String[] args) {
try {
/**
* 向服务器发送信息
*/
//1.定义服务器地址 端口 数据
InetAddress address = InetAddress.getLocalHost();
byte[] data = "客户端发往服务器的数据".getBytes();
//2.创建数据报
DatagramPacket packet = new DatagramPacket(data, data.length, address, 18081);
//4.向服务器发送数据
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
System.out.println("向服务器发送数据成功!");
/**
* 接收服务器响应信息
*/
byte[] reqData = new byte[1024];
DatagramPacket reqPacket = new DatagramPacket(reqData, reqData.length);
socket.receive(reqPacket);
String info = new String(reqData, 0, reqPacket.getLength());
System.out.println("接收服务器的响应数据为:" + info);
} catch (Exception e) {
e.printStackTrace();
}
}
}