1. 程式人生 > 實用技巧 >網路程式設計之 UDP 訊息傳送

網路程式設計之 UDP 訊息傳送

發簡訊:不用連線,但需要知道對方的地址,客戶端、服務端沒有明確的界限,可以說沒有客戶端、服務端一說。

傳送端

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、建立一個 Socket
DatagramSocket 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();

    }

}