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);//发送
}
}