package com.ck.prefix;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
/**
* UDP传输的Server端
*/
public class UDPServer {
public static void main(String[] args) throws IOException {
//创建指定端口号的DatagramSocket
DatagramSocket socket = new DatagramSocket(8888);
byte [] data = new byte[1024];
//创建数据报,接收来自客户端的请求
DatagramPacket datagramPacket1 = new DatagramPacket(data,data.length);
//接收来自客户端的请求,一直阻塞直到接收来自客户端的请求
socket.receive(datagramPacket1);
String rcv = new String(data, 0, data.length);
System.out.println("我是服务端,接受到客户端的数据=" + rcv);
//往客户端的响应
//获取inetAddress、端口号
InetAddress inetAddress = datagramPacket1.getAddress();
int port = datagramPacket1.getPort();
byte [] data1 = "欢迎你".getBytes();
DatagramPacket datagramPacket = new DatagramPacket(data1, 0, data1.length, inetAddress,port);
//像客户端返回响应数据报
socket.send(datagramPacket);
}
}
package com.ck.prefix;
import java.io.IOException;
import java.net.*;
/**
* UDP传输的Client端
*/
public class UDPClient {
public static void main(String[] args) throws IOException {
//要发送的数据
byte [] data = "用户名:ck,密码:1314".getBytes();
//参数解释:1、要发送的数据的byte数组;2、从数组的指定位置开始发送;3、要发送数组的长度;4、目的地的address;5、目的地的监听端口号
DatagramPacket datagramPacket = new DatagramPacket(data, 0, data.length, InetAddress.getByName("localhost"), 8888);
DatagramSocket socket = new DatagramSocket();
//像服务端发送数据报文
socket.send(datagramPacket);
//接收服务端的响应
byte [] data1 = new byte[1024];
//参数解释:1、byte数组存储返回的Packet;2、要读取的长度
DatagramPacket datagramPacket1 = new DatagramPacket(data1,data1.length);
socket.receive(datagramPacket1);
String rcv = new String(data1, 0, data1.length);
System.out.println("我是客户端,接受到服务器端的数据=" + rcv);
}
}