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

Java實現(xiàn)UDP通信過程實例分析【服務(wù)器端與客戶端】

 更新時間:2020年05月07日 11:09:41   作者:Juily家的小蜜果  
這篇文章主要介紹了Java實現(xiàn)UDP通信過程,結(jié)合實例形式分析了java實現(xiàn)UDP服務(wù)器端與客戶端相關(guān)操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了Java實現(xiàn)UDP通信過程。分享給大家供大家參考,具體如下:

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

DatagramSocket

這個類用來表示發(fā)送和接收數(shù)據(jù)包的套接字。

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

DatagramPacket

表示數(shù)據(jù)報包,用來實現(xiàn)無連接的包的投遞服務(wù)。這些數(shù)據(jù)包選擇不同的路由,經(jīng)過計算機的存儲轉(zhuǎn)發(fā),最終到達(dá)目的計算機。所以到達(dá)的數(shù)據(jù)包和發(fā)送時的順序不一定會相同。

Sever端程序

一,調(diào)用DatagramSocket(int port)創(chuàng)建一個數(shù)據(jù)報套接字,綁定在指定端口上;
二,調(diào)用DatagramPacket(byte[] buf,int length),建立一個字節(jié)數(shù)組來接收UDP包;
三,調(diào)用DatagramSocket.receive();
四,最后關(guān)閉數(shù)據(jù)報套接字。

Client端程序

一,調(diào)用DatagramSocket()創(chuàng)建一個數(shù)據(jù)報套接字;
二,調(diào)用DatagramPacket(byte[] buf,int offset,InetAddress address,int port),建立要發(fā)送的UDP包
三,調(diào)用DatagramSocket類的send方法發(fā)送數(shù)據(jù)包;
四,關(guān)閉數(shù)據(jù)報套接字。

數(shù)據(jù)報套接字發(fā)送成功后,相當(dāng)于建立了一個虛連接,雙方可以發(fā)送數(shù)據(jù)。

實例

服務(wù)器端:

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

客戶端:

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

更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java Socket編程技巧總結(jié)》、《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點技巧總結(jié)》和《Java緩存操作技巧匯總

希望本文所述對大家java程序設(shè)計有所幫助。

相關(guān)文章

  • Springboot+MyBatis進行日志輸出參考示例

    Springboot+MyBatis進行日志輸出參考示例

    這篇文章主要給大家介紹了關(guān)于Springboot+MyBatis進行日志輸出的相關(guān)資料,在項目開發(fā)過程中,日志是必不可少的,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • Java中的攔截器、過濾器、監(jiān)聽器用法詳解

    Java中的攔截器、過濾器、監(jiān)聽器用法詳解

    這篇文章主要介紹了Java中的攔截器、過濾器、監(jiān)聽器用法,詳細(xì)分析了Java攔截器、過濾器、監(jiān)聽器的功能、使用方法及相關(guān)注意事項,需要的朋友可以參考下
    2017-05-05
  • Java實現(xiàn)24點小游戲

    Java實現(xiàn)24點小游戲

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)24點小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-01-01
  • SpringMVC中Invalid bound statement (not found)常見報錯問題解決

    SpringMVC中Invalid bound statement (not f

    本文主要介紹了SpringMVC中Invalid bound statement (not found)常見報錯問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • springboot讀取bootstrap配置及knife4j版本兼容性問題及解決

    springboot讀取bootstrap配置及knife4j版本兼容性問題及解決

    這篇文章主要介紹了springboot讀取bootstrap配置及knife4j版本兼容性問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java中逆序遍歷List集合的實現(xiàn)

    Java中逆序遍歷List集合的實現(xiàn)

    本文主要介紹了Java中逆序遍歷List集合的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Mybatis-plus數(shù)據(jù)權(quán)限D(zhuǎn)ataPermissionInterceptor實現(xiàn)

    Mybatis-plus數(shù)據(jù)權(quán)限D(zhuǎn)ataPermissionInterceptor實現(xiàn)

    本文主要介紹了Mybatis-plus數(shù)據(jù)權(quán)限D(zhuǎn)ataPermissionInterceptor實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • mybatis快速上手并運行程序

    mybatis快速上手并運行程序

    MyBatis 是一款優(yōu)秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎所有的 JDBC 代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。MyBatis 可以通過簡單的 XML 或注解來配置和映射原始類型、接口和 Java POJO為數(shù)據(jù)庫中的記錄
    2022-01-01
  • 深入介紹Java對象初始化

    深入介紹Java對象初始化

    本文對Java如何執(zhí)行對象的初始化做一個詳細(xì)深入地介紹。有需要的小伙伴們可以參考。
    2016-07-07
  • Java自帶定時任務(wù)ScheduledThreadPoolExecutor實現(xiàn)定時器和延時加載功能

    Java自帶定時任務(wù)ScheduledThreadPoolExecutor實現(xiàn)定時器和延時加載功能

    今天小編就為大家分享一篇關(guān)于Java自帶定時任務(wù)ScheduledThreadPoolExecutor實現(xiàn)定時器和延時加載功能,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12

最新評論

孟村| 资兴市| 通江县| 安阳市| 宁波市| 景东| 合作市| 工布江达县| 花莲县| 安平县| 马龙县| 达州市| 宝鸡市| 肇州县| 远安县| 新巴尔虎左旗| 霞浦县| 开远市| 普格县| 阜新市| 汨罗市| 宜君县| 汾西县| 隆回县| 綦江县| 左贡县| 锡林郭勒盟| 娄底市| 富源县| 东港市| 大丰市| 繁昌县| 诏安县| 彭泽县| 婺源县| 河南省| 驻马店市| 姚安县| 赤城县| 新昌县| 肇源县|