//发送方
public class Send {
public static void main(String[] args) throws Exception {
DatagramSocket sock = new DatagramSocket(12345); //自身端口
byte[] data = "n你好".getBytes();
DatagramPacket pack = new DatagramPacket(data, data.length,
InetAddress.getByName("127.0.0.1"), 12344); //目的IP,目的端口
sock.send(pack); //发送
}
}
//接收方
public class Accept {
public static void main(String[] args) throws Exception {
DatagramSocket sock = new DatagramSocket(12344);
new Thread(()->{
while(true) {
DatagramPacket p = new DatagramPacket(new byte[100],100);
try {
sock.receive(p);
byte[] data = Arrays.copyOf(p.getData(),p.getLength() );
System.out.println(new String(data));
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
}
}
public class UdpManager {
private DatagramSocket sock;
private boolean isrun = true;
private int bufferSize = 1000;
private int port;
private NetListenner listenner;
public void addNetListenner(NetListenner listenner) {
this.listenner = listenner;
}
public UdpManager(int port) throws Exception {
super();
this.port = port;
sock = new DatagramSocket();
}
public void send(String ip, int port, String msg) throws Exception {
byte[] data = msg.getBytes();
DatagramPacket pack = new DatagramPacket(data, data.length, InetAddress.getByName("ip"), port); // 目的IP,目的端口
sock.send(pack); // 发送
}
public void run() {
while (true) {
DatagramPacket p = new DatagramPacket(new byte[bufferSize], bufferSize);
try {
sock.receive(p);
byte[] data = Arrays.copyOf(p.getData(), p.getLength());
System.out.println(new String(data));
if (listenner != null) {
listenner.getMsg(p.getAddress().getHostAddress(), p.getPort(), new String(data));
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
public void close() {
isrun = false;
sock.close();
}
public interface NetListenner {
public void getMsg(String ip, int port, String msg);
}
}