基于 UDP 的网络聊天 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class Chart { private static final int PORT = 2999; // 程序占用端口号 public static void main(String[] args) throws Exception { receiveMsg(); sendMsg(); } private static void sendMsg() throws Exception { BufferedReader br = null; String receiveIp = null; // 接收方ip String message = null; // 消息 byte[] bytes = null; while (true) { // 输入接收方地址 System.out.println("请输入接收方的 IP 地址:"); br = new BufferedReader(new InputStreamReader(System.in)); receiveIp = br.readLine(); // 输入消息内容 System.out.println("请输入消息内容:"); br = new BufferedReader(new InputStreamReader(System.in)); message = br.readLine(); bytes = message.getBytes(); // 发送消息 DatagramSocket ds = new DatagramSocket(); DatagramPacket dp = new DatagramPacket(bytes, bytes.length, InetAddress.getByName(receiveIp), PORT); ds.send(dp); } } private static void receiveMsg() throws SocketException { new Thread() { String message = null; String sendIp = null; byte[] bytes = null; DatagramSocket ds = null; DatagramPacket dp = null; public void run() { while (true) { bytes = new byte[1024]; try { ds = new DatagramSocket(PORT); } catch (SocketException e1) { e1.printStackTrace(); } dp = new DatagramPacket(bytes, 1024); try { ds.receive(dp); } catch (IOException e) { e.printStackTrace(); } message = new String(bytes, 0, bytes.length).trim(); sendIp = dp.getAddress().getHostAddress(); System.out.println("(" + sendIp + " 发来消息):" + message); ds.close(); } } }.start(); } } 运行结果: 可以实现外网聊天呦 ^_^ 有点小成就感