服务器端(server):
1. 构造DatagramSocket实例,指定本地端口。
2. 通过DatagramSocket实例的receive方法接收DatagramPacket.DatagramPacket
中间就包含了通信的内容。
3. 通过DatagramSocket的send和receive方法来收和发DatagramPacket.
客户端(client):
1. 构造DatagramSocket实例。
2.通过DatagramSocket实例的send和receive方法发送DatagramPacket报文。
3.结束后,调用DatagramSocket的close方法关闭。
一个例子
public class AskServer {
public static void main(String[] args) {
//创建DatagramSocket,发送接收数据
DatagramSocket socket=null;
try {
socket = new DatagramSocket(8888);
Scanner input = new Scanner(System.in);
while(true){
//准备一个空的数据包,用来接收数据
byte [] buf = new byte[1024];
DatagramPacket packet = new
DatagramPacket(buf, buf.length);
//接收数据使用空的数据包
socket.receive(packet);
//输出信息
String info = new String
(packet.getData(), 0, packet.getLength());
System.out.println("客户端请
求:"+info);
//判断是否退出
if("bye".equals(info)){
break;
}
//发送数据
String result =input.nextLine();
byte[] buf2= result.getBytes();
DatagramPacket packet2 = new
DatagramPacket(buf2, buf2.length,
packet.getAddress(),
packet.getPort());
socket.send(packet2);
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭socket
socket.close();
}
}
}
/**
* 在线客服客户
*/
public class AskClient {
public static void main(String[] args) {
//创建DatagramSocket,发送接收数据都依赖他
DatagramSocket socket=null;
try {
socket = new DatagramSocket(9999);
Scanner input = new Scanner(System.in);
while(true){
//准备要发送的数据
String str =input.nextLine();//bye
//使用数据包把数据封装起来
byte[] buf =str.getBytes();
DatagramPacket packet = new
DatagramPacket(buf, buf.length,
InetAddress.getByName
("192.168.1.252"), 8888);
//发送数据包
socket.send(packet);
//判断是否退出
if("bye".equals(str)){
break;
}
//接收数据
byte [] buf2 = new byte[1024];
DatagramPacket packet2 = new
DatagramPacket(buf2, buf2.length);
socket.receive(packet2);
System.out.println("服务器端反馈:"+
new String(packet2.getData(),0,packet2.getLength()));
}
} catch (SocketException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
//关闭socket
socket.close();
}
}
}