1、服务端
package com.wyq.server;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
public class TestUDPServer3 {
public static void main(String[] args) throws IOException {
//使用udp实现多次循环聊天
//创建对象连接
Scanner sc = new Scanner(System.in);
DatagramSocket ds = new DatagramSocket();
//循环的使用重复做
while(true){
System.out.println("请输入发送的内容");
String str1 = sc.next();
byte buf [] = str1.getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.190.1"),9000);
ds.send(dp);
//接收
byte buf2 [] = new byte [1024];
DatagramPacket dp2 = new DatagramPacket(buf2, buf2.length,dp.getAddress(), dp.getPort());
ds.receive(dp2);
System.out.println(new String(dp2.getData(),0,dp2.getLength()));
if(str1.equals("bye")){
break;
}
}
ds.close();
}
}
2、客户端
package com.wyq.client;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.util.Scanner;
public class TestUDPClient3 {
public static void main(String[] args) throws IOException {
//创建连接
DatagramSocket ds = new DatagramSocket(9000);
Scanner sc = new Scanner(System.in);
while(true){
//创建数组,用于接收对象
byte buf [] = new byte [1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);
//解析,从0开始,解析到dp.length的长度
System.out.println(new String(dp.getData(),0,dp.getLength()));
//接收完成之后,还需要进行发送对象
System.out.println("请输入发送的内容");
String str = sc.next();
//创建数组,用于进行封装
byte buf2 [] = new byte [1024];
DatagramPacket dp2 = new DatagramPacket(buf2, buf2.length,dp.getAddress(),dp.getPort());
ds.send(dp2);
if(str.equals("bye")){
break;
}
}
//关闭
ds.close();
}
}
总结:
1、服务端:
1)首次是创建连接
2)创建数组,用于存储实收到的对象
3)接收
4)进行解析
5)创建回复的数组对象
6)打包
7)发送
8)关闭资源
2、客户端一方
1)创建连接对象
2)创建数组内容,用于发送
3)打包
4)发送
5)创建接收对象
6)创建接收的数组,用于存储接收到的东西
7)接收
8)进行解析
9)释放资源