亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java如何實現UDP通信

發布時間:2020-07-28 14:54:58 來源:億速云 閱讀:144 作者:小豬 欄目:編程語言

小編這次要給大家分享的是Java如何實現UDP通信,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

TCP是一種面向連接的傳輸層協議,而UDP是傳輸層中面向無連接的協議,故傳送的數據包不能保證有序和不丟失,實現UDP通信主要用到了兩個類:DatagramPacket和DatagramSocket。

DatagramSocket

這個類用來表示發送和接收數據包的套接字。

//構造方法,創建數據報套接字并將其綁定到本地主機上的指定端口
DatagramSocket socket = new DatagramSocket(0);

DatagramPacket

表示數據報包,用來實現無連接的包的投遞服務。這些數據包選擇不同的路由,經過計算機的存儲轉發,最終到達目的計算機。所以到達的數據包和發送時的順序不一定會相同。

Java如何實現UDP通信

Sever端程序

一,調用DatagramSocket(int port)創建一個數據報套接字,綁定在指定端口上;
二,調用DatagramPacket(byte[] buf,int length),建立一個字節數組來接收UDP包;
三,調用DatagramSocket.receive();
四,最后關閉數據報套接字。

Client端程序

一,調用DatagramSocket()創建一個數據報套接字;
二,調用DatagramPacket(byte[] buf,int offset,InetAddress address,int port),建立要發送的UDP包
三,調用DatagramSocket類的send方法發送數據包;
四,關閉數據報套接字。

數據報套接字發送成功后,相當于建立了一個虛連接,雙方可以發送數據。

實例

服務器端:

/*
 * 服務器端,實現基于UDP的用戶登陸
 */
public class UDPServer {
  public static void main(String[] args) throws IOException {
    /*
     * 接收客戶端發送的數據
     */
    // 1.創建服務器端DatagramSocket,指定端口
    DatagramSocket socket = new DatagramSocket(8800);
    // 2.創建數據報,用于接收客戶端發送的數據
    byte[] data = new byte[1024];// 創建字節數組,指定接收的數據包的大小
    DatagramPacket packet = new DatagramPacket(data, data.length);
    // 3.接收客戶端發送的數據
    System.out.println("****服務器端已經啟動,等待客戶端發送數據");
    socket.receive(packet);// 此方法在接收到數據報之前會一直阻塞
    // 4.讀取數據
    String info = new String(data, 0, packet.getLength());
    System.out.println("我是服務器,客戶端說:" + info);
 
    /*
     * 向客戶端響應數據
     */
    // 1.定義客戶端的地址、端口號、數據
    InetAddress address = packet.getAddress();
    int port = packet.getPort();
    byte[] data2 = "歡迎您!".getBytes();
    // 2.創建數據報,包含響應的數據信息
    DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port);
    // 3.響應客戶端
    socket.send(packet2);
    // 4.關閉資源
    socket.close();
  }
}

客戶端:

/*
 * 客戶端
 */
public class UDPClient {
  public static void main(String[] args) throws IOException {
    /*
     * 向服務器端發送數據
     */
    // 1.定義服務器的地址、端口號、數據
    InetAddress address = InetAddress.getByName("localhost");
    int port = 8800;
    byte[] data = "用戶名:admin;密碼:123".getBytes();
    // 2.創建數據報,包含發送的數據信息
    DatagramPacket packet = new DatagramPacket(data, data.length, address, port);
    // 3.創建DatagramSocket對象
    DatagramSocket socket = new DatagramSocket();
    // 4.向服務器端發送數據報
    socket.send(packet);
 
    /*
     * 接收服務器端響應的數據
     */
    // 1.創建數據報,用于接收服務器端響應的數據
    byte[] data2 = new byte[1024];
    DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
    // 2.接收服務器響應的數據
    socket.receive(packet2);
    // 3.讀取數據
    String reply = new String(data2, 0, packet2.getLength());
    System.out.println("我是客戶端,服務器說:" + reply);
    // 4.關閉資源
    socket.close();
  }
}

看完這篇關于Java如何實現UDP通信的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

分宜县| 牡丹江市| 邛崃市| 襄垣县| 德令哈市| 兴安县| 巨野县| 祁门县| 鹿泉市| 喜德县| 九台市| 延安市| 南通市| 衡阳市| 葵青区| 鹿泉市| 宜都市| 水富县| 和政县| 齐齐哈尔市| 江孜县| 西宁市| 榕江县| 南投市| 庆城县| 商洛市| 英山县| 扶沟县| 朝阳县| 兴隆县| 正宁县| 陆川县| 南通市| 财经| 宣恩县| 土默特左旗| 鄂伦春自治旗| 兴海县| 浦江县| 凯里市| 宣化县|