亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

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

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

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ā)送方與接收方的連接。

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

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

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

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

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

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

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

關(guān)閉DatagramSocket。

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

1.編寫一個接收端A,一個發(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)建一個DatagramSocket對象,準(zhǔn)備在9999接收數(shù)據(jù)
        DatagramSocket socket = new DatagramSocket(9999);
        //2.構(gòu)建一個DatagramPacket對象,準(zhǔn)備接收數(shù)據(jù)
        byte[] buf = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buf, buf.length);
        //3.調(diào)用接收方法,將通過網(wǎng)絡(luò)傳輸?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);

        //回復(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 對象,準(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ù)據(jù)字節(jié)長度
        data = datagramPacket.getData();//實際接收的數(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺談spring DI 依賴注入方式和區(qū)別

    淺談spring DI 依賴注入方式和區(qū)別

    Spring框架對Java開發(fā)的重要性不言而喻,本文主要介紹了spring DI 依賴注入方式和區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java基礎(chǔ)之super關(guān)鍵字淺析

    Java基礎(chǔ)之super關(guān)鍵字淺析

    java中的super關(guān)鍵字是一個引用變量,用于引用直接父類對象,下面這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)之super關(guān)鍵字的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • SpringBoot中@EnableAsync和@Async注解的使用小結(jié)

    SpringBoot中@EnableAsync和@Async注解的使用小結(jié)

    在SpringBoot中,可以通過@EnableAsync注解來啟動異步方法調(diào)用的支持,通過@Async注解來標(biāo)識異步方法,讓方法能夠在異步線程中執(zhí)行,本文就來介紹一下,感興趣的可以了解一下
    2023-11-11
  • 圖文詳解Java的反射機制

    圖文詳解Java的反射機制

    反射就是Reflection,Java的反射是指程序在運行期可以拿到一個對象的所有信息。反射機制是框架的靈魂,一個java程序員不能不會使用反射,本文就來和大家一起詳細(xì)聊聊Java的反射機制
    2022-08-08
  • CentOS 7下JDK8的詳細(xì)安裝步驟

    CentOS 7下JDK8的詳細(xì)安裝步驟

    這篇文章主要為大家介紹了CentOS 7下JDK8的詳細(xì)安裝步驟,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 配置hadoop環(huán)境mapreduce連接不上hdfs解決

    配置hadoop環(huán)境mapreduce連接不上hdfs解決

    這篇文章主要為大家介紹了配置hadoop環(huán)境mapreduce連接不上hdfs解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Spring Security結(jié)合JWT的方法教程

    Spring Security結(jié)合JWT的方法教程

    這篇文章主要給大家介紹了關(guān)于Spring Security結(jié)合JWT的方法教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-12-12
  • springboot tomcat的maxHttpFormPostSize參數(shù)示例解析

    springboot tomcat的maxHttpFormPostSize參數(shù)示例解析

    這篇文章主要介紹了springboot tomcat的maxHttpFormPostSize參數(shù)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • java 線程公平鎖與非公平鎖詳解及實例代碼

    java 線程公平鎖與非公平鎖詳解及實例代碼

    這篇文章主要介紹了java 線程公平鎖與非公平鎖詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • java多線程加鎖以及Condition類的使用實例解析

    java多線程加鎖以及Condition類的使用實例解析

    這篇文章主要介紹了java多線程加鎖以及Condition類的使用實例解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-11-11

最新評論