發送端 java
import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 發送端 * @author Administrator * */ public class Send implements Runnable{ private DatagramSocket ds; public Send(DatagramSocket ds){ this.ds = ds; } @Override public void run() { try{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String line = null; while((line = br.readLine()) != null){ byte[] b = line.getBytes(); DatagramPacket dp = new DatagramPacket(b, b.length, InetAddress.getByName("127.0.0.1"), 8888); //發送廣播,羣聊 // DatagramPacket dp = new DatagramPacket(b, b.length, InetAddress.getByName("192.168.123.255"), 8888); ds.send(dp); if("over".equalsIgnoreCase(line)) break; } ds.close(); }catch(Exception e){ e.printStackTrace(); } } }
接收端 ide
import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 接收端 * @author Administrator * */ public class Receive implements Runnable { private DatagramSocket ds; public Receive(DatagramSocket ds) { this.ds = ds; } @Override public void run() { try { while (true) { byte[] b = new byte[1024]; DatagramPacket dp = new DatagramPacket(b, b.length); ds.receive(dp); String ip = dp.getAddress().getHostAddress(); int port = dp.getPort(); String text = new String(dp.getData(), 0, dp.getLength()); System.out.println(ip+":" + port + "==" + text); if("over".equalsIgnoreCase(text)){ System.out.println("-----退出聊天-----"); break; } } } catch (Exception e) { e.printStackTrace(); } } }
測試 測試
import java.io.IOException; import java.net.DatagramSocket; /** * 測試 * @author Administrator * */ public class ChatTest { public static void main(String[] args) throws IOException { DatagramSocket dsend = new DatagramSocket(); DatagramSocket dsRece= new DatagramSocket(8888); Send s = new Send(dsend); Receive r = new Receive(dsRece); new Thread(s).start(); new Thread(r).start(); } }