UDP编程实现一个对话机器人
UDP服务端的信息:
1、启动一个UDP服务器端(ip默认电脑的ip,端口号要设置)
2、初始化数据包
3、等待客户端的连接(正式执行)receive方法需要DatagramPacket,客户端有这个的包才能链接
4、接受客户端的信息
5、给客户端一个响应
代码如下:
package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
/**
* Created with IntelliJ IDEA.
* Description:
* User: HuYu
* Date: 2021-04-17
* Time: 11:30
*/
//UDP服务器端
public class UDPServer {
private static final int port = 9001;//端口号
private static final int bleng =1024 ;//传递数据的最大值
public static void main(String[] args) throws IOException {
//1、启动一个UDP服务器端(ip默认电脑的ip,端口号要设置)
DatagramSocket socket = new DatagramSocket(port);
System.out.println("服务器已启动!");
//ip为默认ip
while (true){
//检测是否有人来连接服务器端,
//2、初始化数据包
DatagramPacket clientPacket = new DatagramPacket(
new byte[bleng],bleng//byte数组存放传送的数据的集合,bleng为传送数据的长度
);
//3、等待客户端的连接(正式执行)receive方法需要DatagramPacket,客户端有这个的包才能链接
socket.receive(clientPacket);//服务器端接收到客户端的包
//此时已连接到客户端(IP,地址,端口)
//4、接受客户端的信息
String msg = new String(clientPacket.getData());
System.out.println("接收到客户端的信息:"+msg);
//5、给客户端一个响应
String serMsg = "我收到了";
//发送消息
DatagramPacket serPacket = new DatagramPacket(
serMsg.getBytes(),
serMsg.getBytes().length,//字节长度
clientPacket.getAddress(),
clientPacket.getPort()
);
socket.send(serPacket);
}
}
}
UDP客户端的信息:
1、启动客户端
2、发送消息给服务器端
3、接收服务器的返回信息
4、接受服务器端的响应信息
代码:
package udp;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
/**
* Created with IntelliJ IDEA.
* Description:
* User: HuYu
* Date: 2021-04-17
* Time: 14:46
*/
//客户端
public class UDPClient {
//不设置端口号
//服务器的IP地址
private static final String ip = "127.0.0.1";
//服务器的端口号
private static final int port = 9001;
private static final int bleng =1024;
public static void main(String[] args) throws IOException {
//1、启动客户端
DatagramSocket client = new DatagramSocket();
Scanner scanner = new Scanner(System.in);
while (true){
System.out.println("->");
String msg = scanner.nextLine();
//2、发送消息给服务器端
DatagramPacket datagramPacket = new DatagramPacket(
msg.getBytes(),
msg.getBytes().length,
InetAddress.getByName(ip),
port
);
client.send(datagramPacket);
//3、接收服务器的返回信息
DatagramPacket serPacket = new DatagramPacket(
new byte[bleng],
bleng
);
client.receive(serPacket);
//4、接受服务器端的响应信息
String serMsg = new String(serPacket.getData());
System.out.println("服务器返回:"+serMsg);
}
}
}
运行截图: