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

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

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

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

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

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

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

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

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

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

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

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

核心的兩個(gè)類/對(duì)象,DatagramSocket與DatagramPacket;

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

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

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

關(guān)閉DatagramSocket。

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

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

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

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

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

5.發(fā)送端接收回復(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)建一個(gè)DatagramSocket對(duì)象,準(zhǔn)備在9999接收數(shù)據(jù)
        DatagramSocket socket = new DatagramSocket(9999);
        //2.構(gòu)建一個(gè)DatagramPacket對(duì)象,準(zhǔn)備接收數(shù)據(jù)
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        //3.調(diào)用接收方法,將通過網(wǎng)絡(luò)傳輸?shù)?DatagramPacket對(duì)象 填充到 packet對(duì)象
        System.out.println("接收端A 等待接收數(shù)據(jù)...");
        socket.receive(packet);
        //4.把packet進(jìn)行拆包,取出數(shù)據(jù)
        int length = packet.getLength();//實(shí)際數(shù)據(jù)字節(jié)長度
        byte[] data = packet.getData();//實(shí)際接收的數(shù)據(jù)
        String s = new String(data, 0, length);
        System.out.println(s);

        //回復(fù)信息給B端
        data = "你好!發(fā)送端".getBytes();
        packet = new DatagramPacket(data, 0, data.length,
                InetAddress.getLocalHost(), 9998);
        socket.send(packet);
        //5.關(guān)閉資源
        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 對(duì)象,準(zhǔn)備在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í)際數(shù)據(jù)字節(jié)長度
        data = datagramPacket.getData();//實(shí)際接收的數(shù)據(jù)
        String s = new String(data, 0, length);
        System.out.println(s);
        //關(guān)閉資源
        socket.close();
    }
}

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    Java中的位運(yùn)算符全解

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

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

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

    淺談Java 將圖片打包到j(luò)ar中的路徑問題

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

    Spring?Security?中多個(gè)身份驗(yàn)證的示例代碼

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

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

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

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

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

最新評(píng)論

肥东县| 安化县| 横峰县| 武城县| 土默特右旗| 红原县| 河源市| 务川| 沈丘县| 永吉县| 武穴市| 屏南县| 宝山区| 四平市| 房山区| 荥阳市| 乐平市| 林周县| 大理市| 民和| 兴海县| 新竹市| 磴口县| 夏津县| 迭部县| 即墨市| 会宁县| 浙江省| 界首市| 哈巴河县| 越西县| 化德县| 平泉县| 稷山县| 南川市| 定日县| 灵山县| 崇州市| 耿马| 五寨县| 聂拉木县|