網路程式設計之 UDP 訊息傳送
阿新 • • 發佈:2020-11-20
發簡訊:不用連線,但需要知道對方的地址,客戶端、服務端沒有明確的界限,可以說沒有客戶端、服務端一說。
傳送端
package lesson03; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; /** * 傳送端 */ public class UdpClientDemo1 { public static void main(String[] args) throws Exception { //1、建立一個 SocketDatagramSocket socket = new DatagramSocket(); /** * 2、建個包 */ //需要傳送的訊息 String msg = "你好啊,伺服器!"; //傳送地址 InetAddress localhost = InetAddress.getByName("localhost"); //主機 //傳送埠 int port = 9090; /** * 五個引數: *@param buf msg.getBytes():需要傳送的資料包 * @param offset 0:資料偏移量 * @param length msg.getBytes().length:資料長度 * @param address localhost:目標地址 * @param port port:目標埠 */ DatagramPacket packet = new DatagramPacket(msg.getBytes(), 0, msg.getBytes().length, localhost, port);//3、傳送包 socket.send(packet); //4、關閉流 socket.close(); } }
接收端
package lesson03; import java.net.DatagramPacket; import java.net.DatagramSocket; /** * 接收端 */ public class UdpServerDemo1 { public static void main(String[] args) throws Exception { //開放埠 DatagramSocket socket = new DatagramSocket(9090); //接收資料包 byte[] buffer = new byte[1024]; DatagramPacket packet = new DatagramPacket(buffer, 0, buffer.length); //接收 socket.receive(packet); //阻塞接收 //輸出資料包地址 System.out.println(packet.getAddress().getHostAddress()); /** * 輸出資料包資料 * packet:Data 型別 * 通過構造器轉成 String 型別:new String(); */ System.out.println(new String(packet.getData(), 0, packet.getLength())); //關閉連線 socket.close(); } }