最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java網(wǎng)絡編程之UDP網(wǎng)絡通信詳解

 更新時間:2022年09月23日 15:29:01   作者:興趣使然黃小黃  
這篇文章主要為大家詳細介紹了Java網(wǎng)絡編程中的UDP網(wǎng)絡通信的原理與實現(xiàn),文中的示例代碼講解詳細,具有一定的借鑒價值,需要的可以參考一下

1.UDP網(wǎng)絡通信編程原理

1.1 UDP網(wǎng)絡通信編程介紹

類 DatagramSocket 何 DatagramPacket(數(shù)據(jù)包/數(shù)據(jù)報) 實現(xiàn)了基于 UDP協(xié)議網(wǎng)絡程序;

UDP數(shù)據(jù)報通過數(shù)據(jù)報套接字 DatagramSocket 發(fā)送和接收,系統(tǒng)不保證 UDP數(shù)據(jù)報一定能夠安全送達目的地,也不確定什么時候可以抵達;

DatagramPacket 對象封裝了 UDP數(shù)據(jù)報,在數(shù)據(jù)報中包含了發(fā)送端IP地址和端口號,以及接收端的IP地址和端口號;

UDP協(xié)議中每個數(shù)據(jù)報都給出了完整的地址信息,因此無法建立發(fā)送方與接收方的連接。

沒有明確的服務端和客戶端,演變成數(shù)據(jù)的發(fā)送端和接收端;

接收數(shù)據(jù)和發(fā)送數(shù)據(jù)都是通過 DatagramSocket 對象完成。

1.2 UDP網(wǎng)絡通信編程的基本流程

核心的兩個類/對象,DatagramSocket與DatagramPacket;

建立發(fā)送端和接收端;

建立數(shù)據(jù)包;

調(diào)用DatagramSocket的發(fā)送和接收方法;

關閉DatagramSocket。

2.UDP網(wǎng)絡通信編程案例

1.編寫一個接收端A,一個發(fā)送端B;

2.接收端在 9999端口等待接收數(shù)據(jù)(receive);

3.發(fā)送端向接收端發(fā)送數(shù)據(jù):“你好!接收端”;

4.接收端接收到發(fā)送端的數(shù)據(jù)后,回復:“你好!發(fā)送端”,再退出;

5.發(fā)送端接收回復的數(shù)據(jù),退出。

UDPReceiverA

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

/**
 * @author 興趣使然黃小黃
 * @version 1.0
 * 接收端A
 */
public class UDPReceiverA {
    public static void main(String[] args) throws IOException {
        //1.創(chuàng)建一個DatagramSocket對象,準備在9999接收數(shù)據(jù)
        DatagramSocket socket = new DatagramSocket(9999);
        //2.構(gòu)建一個DatagramPacket對象,準備接收數(shù)據(jù)
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        //3.調(diào)用接收方法,將通過網(wǎng)絡傳輸?shù)?DatagramPacket對象 填充到 packet對象
        System.out.println("接收端A 等待接收數(shù)據(jù)...");
        socket.receive(packet);
        //4.把packet進行拆包,取出數(shù)據(jù)
        int length = packet.getLength();//實際數(shù)據(jù)字節(jié)長度
        byte[] data = packet.getData();//實際接收的數(shù)據(jù)
        String s = new String(data, 0, length);
        System.out.println(s);

        //回復信息給B端
        data = "你好!發(fā)送端".getBytes();
        packet = new DatagramPacket(data, 0, data.length,
                InetAddress.getLocalHost(), 9998);
        socket.send(packet);
        //5.關閉資源
        socket.close();
    }
}

UDPSenderB

import java.io.IOException;
import java.net.*;

/**
 * @author 興趣使然黃小黃
 * @version 1.0
 * 發(fā)送端B
 */
public class UDPSenderB {
    public static void main(String[] args) throws IOException {
        //1.創(chuàng)建 DatagramSocket 對象,準備在9998發(fā)送和接收數(shù)據(jù)
        DatagramSocket socket = new DatagramSocket(9998);
        //2.將需要發(fā)送的數(shù)據(jù),封裝到 DatagramPacket 中
        byte[] data = "你好!接收端".getBytes();
        DatagramPacket datagramPacket =
                new DatagramPacket(data, 0, data.length,
                        InetAddress.getLocalHost(), 9999);
        socket.send(datagramPacket);

        //接收A消息
        socket.receive(datagramPacket);
        int length = datagramPacket.getLength();//實際數(shù)據(jù)字節(jié)長度
        data = datagramPacket.getData();//實際接收的數(shù)據(jù)
        String s = new String(data, 0, length);
        System.out.println(s);
        //關閉資源
        socket.close();
    }
}

到此這篇關于Java網(wǎng)絡編程之UDP網(wǎng)絡通信詳解的文章就介紹到這了,更多相關Java UDP網(wǎng)絡通信內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Mybatis使用IN語句查詢的實現(xiàn)

    Mybatis使用IN語句查詢的實現(xiàn)

    這篇文章主要介紹了Mybatis使用IN語句查詢的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • Spring應用中使用acutator/refresh刷新屬性不生效的問題分析及解決

    Spring應用中使用acutator/refresh刷新屬性不生效的問題分析及解決

    在Spring應用收到/actuator/refresh的POST請求后,標注了@RefreshScope以及@ConfiguratioinProperties的bean會被Spring容器重新加載,但是,在實際應用中,并沒有按照預期被Spring容器加載,本文將討論導致這種未按預期刷新的一種原因,感興趣的朋友可以參考下
    2024-01-01
  • StringUtils中的isEmpty、isNotEmpty、isBlank和isNotBlank的區(qū)別詳解

    StringUtils中的isEmpty、isNotEmpty、isBlank和isNotBlank的區(qū)別詳解

    這篇文章主要介紹了StringUtils中的isEmpty、isNotEmpty、isBlank和isNotBlank的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Springboot內(nèi)外部logback多環(huán)境配置詳解

    Springboot內(nèi)外部logback多環(huán)境配置詳解

    本文主要介紹了Springboot內(nèi)外部logback多環(huán)境配置詳解,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java中的位運算符全解

    Java中的位運算符全解

    這篇文章主要為大家詳細介紹了Java中的位運算符,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • 出現(xiàn)java.lang.UnsupportedClassVersionError錯誤的原因以及解決方法

    出現(xiàn)java.lang.UnsupportedClassVersionError錯誤的原因以及解決方法

    這篇文章主要給大家介紹了關于出現(xiàn)java.lang.UnsupportedClassVersionError錯誤的原因以及解決方法,文中通過圖文以及代碼示例將這個錯誤介紹的非常詳細,需要的朋友可以參考下
    2024-05-05
  • 淺談Java 將圖片打包到jar中的路徑問題

    淺談Java 將圖片打包到jar中的路徑問題

    下面小編就為大家分享一篇淺談Java 將圖片打包到jar中的路徑問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • Spring?Security?中多個身份驗證的示例代碼

    Spring?Security?中多個身份驗證的示例代碼

    這篇文章主要介紹了Spring?Security?中多個身份驗證的示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • Java字符串查找的方法總結(jié)

    Java字符串查找的方法總結(jié)

    在給定的字符串中查找字符或字符串是比較常見的操作,字符串查找分為兩種形式:一種是在字符串中獲取匹配字符(串)的索引值,另一種是在字符串中獲取指定索引位置的字符,本文給大家總結(jié)了Java字符串查找的方法,需要的朋友可以參考下
    2024-05-05
  • Java實現(xiàn)簡單訂餐系統(tǒng)

    Java實現(xiàn)簡單訂餐系統(tǒng)

    這篇文章主要為大家詳細介紹了Java實現(xiàn)簡單訂餐系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01

最新評論

沈丘县| 基隆市| 柘城县| 高阳县| 井陉县| 武强县| 博野县| 侯马市| 花莲市| 乌兰浩特市| 思南县| 永州市| 闵行区| 东丽区| 安龙县| 大姚县| 冷水江市| 蕲春县| 万盛区| 大安市| 彰武县| 仲巴县| 临湘市| 灵寿县| 蓝山县| 河西区| 桃江县| 邯郸市| 长沙市| 故城县| 巢湖市| 德阳市| 延边| 江门市| 鹿泉市| 福鼎市| 正安县| 南通市| 黑水县| 曲周县| 朝阳县|