client:

package com.qiyang.client;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Client {
	private static Scanner scanner;

	public static void main(String[] args) {
		System.out.println("【client online】");
		DatagramSocket ds = null;
		try {
			ds = new DatagramSocket(8888);
			while (true) {
				String str = send(ds, "localhost", 9999);// 发送
				if ("bye".equals(str)) {
					System.out.println("client offline");
					break;
				}
				receive(ds);//接收
			}
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			ds.close();
		}

		
	}
	
	// 发送消息
	private static String send(DatagramSocket ds, String ip, int port) throws IOException {
		scanner = new Scanner(System.in);
		System.out.print("client say:");
		String str = scanner.next();
		byte[] b = str.getBytes();
		InetAddress address = InetAddress.getByName(ip);
		DatagramPacket dp = new DatagramPacket(b, b.length, address, port);
		ds.send(dp);//发送
		return str;
	}
	
	// 接收消息
	private static void receive(DatagramSocket ds) throws IOException {
		byte[] b = new byte[1024];
		DatagramPacket dp = new DatagramPacket(b, b.length);
		ds.receive(dp);
		//处理接收到的数据
		String str = new String(dp.getData(),0,dp.getLength());
		System.out.println("server say:"+str);
	}
	
	
}

Server:

package com.qiyang.server;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;

public class Server {
	private static Scanner scanner;


	public static void main(String[] args) {
		System.out.println("【server online】");
		DatagramSocket ds = null;
		try {
			ds = new DatagramSocket(9999);
			while (true) {
				String str = receive(ds);//接收
				if ("bye".equals(str)) {
					System.out.println("server offline");
					break;
				}
				send(ds, "localhost", 8888);// 回复
			}
		} catch (IOException e) {
			e.printStackTrace();
		}finally {
			ds.close();
		}
	}
	
	
	// 接收消息
	private static String receive(DatagramSocket ds) throws IOException {
		byte[] b = new byte[1024];
		DatagramPacket dp = new DatagramPacket(b, b.length);
		ds.receive(dp);
		//处理接收到的数据
		String str = new String(dp.getData(),0,dp.getLength());
		System.out.println("client say:"+str);
		return str;
	}
	
	
	// 回复消息
	private static void send(DatagramSocket ds, String ip, int port) throws IOException {
		scanner = new Scanner(System.in);
		System.out.print("server say:");
		String str = scanner.next();
		byte[] b = str.getBytes();
		InetAddress address = InetAddress.getByName(ip);
		DatagramPacket dp = new DatagramPacket(b, b.length, address, port);
		ds.send(dp);//发送
	}
}