1. 程式人生 > 其它 >(網路程式設計)UDP程式

(網路程式設計)UDP程式

技術標籤:Java語言高階特性java

資料的傳送與接收(UDP程式)

TCP最大的特點是可靠的網路連線,在網路程式開發之中還存在有一種UDP的程式,基於資料報的網路程式設計實現,如果要想實現UDP程式需要兩個類:

  • DatagramPacket(包含的資料內容)
  • DatagramSocket(網路的傳送與接收)

資料報就好比傳送的短訊息一樣,客戶端是否接受到與傳送者無關。

範例:實現UDP程式

服務端

package UDPModel.server;

import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPServer {

    public static void main(String[] args) throws Exception{

        DatagramSocket server = new DatagramSocket(1111);   //連線到1111埠
        String str = "Hello Word!"; //要傳送的內容
        //要傳送的訊息物件
        /**
         * 分組資料 str.getBytes() 轉為位元組陣列
         * 分組資料偏移量 0 資料起始位置
         * 分組資料長度 str.length() 字串長度
         * 目的地址 InetAddress.getByName("localhost") 根據主機名稱確定主機的IP地址。
         *  目標埠號 1010 埠
         */
        DatagramPacket packet = new DatagramPacket(str.getBytes(),0,str.length(),
                                InetAddress.getByName("localhost"),1010);   //傳送給1010埠
        server.send(packet);//傳送資料
        System.out.println("訊息傳送完畢");
        server.close();

    }

}

客戶端

package UDPModel.client;

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPClient {

    public static void main(String[] args) throws Exception{

        DatagramSocket client = new DatagramSocket(1010);   //連線到1010埠
        byte[] data = new byte[1024];   //接收訊息
        DatagramPacket packet = new DatagramPacket(data,data.length);   //接收資料的物件
        System.out.println("客戶端等待接收的訊息......");
        client.receive(packet); //接收訊息,所有訊息都在data位元組陣列之中
        System.out.println("接收到的訊息內容為"+new String(data,0,packet.getLength()));
        client.close();

    }

}

先開啟客戶端等待接收,通過服務端傳送給客戶端,客戶端接收。

  1. 客戶端:客戶端等待接收的訊息......
  2. 服務端:訊息傳送完畢
  3. 客戶端:客戶端等待接收的訊息......
    接收到的訊息內容為Hello Word!

UDP傳送的資料一定是不可靠的,但是TCP由於需要保證可靠的連線,所以需要伺服器的資源就越多。