package UDP2;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Scanner;
/*
* 完成UDP 通信快速入门 实现发1收1*/
public class Client {
public static void main(String[] args) throws Exception{
// 1创建客户端对象
DatagramSocket socket= new DatagramSocket();
//2创建数据包对象封装要发出去的数据
/* public DatagramPacket(byte buf[], int length,
InetAddress address, int port)
参数一 封装要发出去的数据
参数二 我要发的参数大小
参数三 服务端IP地址
参数四 服务端端口
*/
Scanner sc=new Scanner(System.in);
while (true) {
System.out.println("请说:");
String msg= sc.nextLine();
byte[] bytes= msg.getBytes();
// 用户输入exit命令 退出客户端
if ("exit".equals(msg)){
System.out.println("欢迎下次光临! 退出成功!");
socket.close(); //释放资源
break; //跳出去循环
}
DatagramPacket packet =new DatagramPacket(bytes,bytes.length,
InetAddress.getLocalHost(),6666);
// 3:开始正式发送数据包的数据发出去
socket.send(packet);
}
}
}
package UDP2;
//完成UDP通信服务端
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class Server {
public static void main(String[] args) throws Exception{
//1创建一个服务端对象
System.out.println("---------服务端启动---------");
DatagramSocket socket= new DatagramSocket(6666);
//2 创建数据对象用接收数据
byte [] buffer=new byte[1024*64]; //1KB * 64= 64KB
DatagramPacket packet=new DatagramPacket(buffer,buffer.length);
while (true) {
//3:开始正式设用数据包接收客户端发来的数据
socket.receive(packet);
//4:字节数组中的数据打印出来
//接收多少倒出多少
int lin= packet.getLength();
String rs=new String(buffer,0,lin);
System.out.println(rs);
System.out.println(packet.getAddress().getHostAddress());
System.out.println(packet.getPort());
System.out.println("============================================");
}
}
}