欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

JAVA編程實現(xiàn)UDP網(wǎng)絡通訊的方法示例

 更新時間:2017年08月02日 12:14:12   作者:遲做總比不做強  
這篇文章主要介紹了JAVA編程實現(xiàn)UDP網(wǎng)絡通訊的方法,簡單說明了UDP通訊的原理并結(jié)合實例形式分析了java實現(xiàn)UDP通訊的相關類與使用技巧,需要的朋友可以參考下

本文實例講述了JAVA編程實現(xiàn)UDP網(wǎng)絡通訊的方法。分享給大家供大家參考,具體如下:

UDP協(xié)議全稱是用戶數(shù)據(jù)報協(xié)議,在網(wǎng)絡中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無連接的協(xié)議。

在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對數(shù)據(jù)包進行排序的缺點:

也就是說,當報文發(fā)送之后,是無法得知其是否安全完整到達的。UDP用來支持那些需要在計算機之間傳輸數(shù)據(jù)的網(wǎng)絡應用。

采用UDP協(xié)議要先把數(shù)據(jù)定義成數(shù)據(jù)報(Datagram)并在數(shù)據(jù)報中指明數(shù)據(jù)所要達到的Socket,再進行數(shù)據(jù)傳遞。

主要涉及的兩個類:

DatagramPacket:數(shù)據(jù)報包類
DatagramSocket:數(shù)據(jù)端對端通訊類

簡單demo之UDP服務端

public class UdpServer {
  public static void main(String[] args) {
    // 實現(xiàn)步驟1:創(chuàng)建DatagramSokcet
    try {
      DatagramSocket mSocket = new DatagramSocket(9999);
      // 實現(xiàn)步驟2:創(chuàng)建DatagramPacket
      byte[] data = new byte[1024];
      DatagramPacket mPacket = new DatagramPacket(data, data.length);
      // 實現(xiàn)步驟3:接收 數(shù)據(jù)
      mSocket.receive(mPacket);
      // 實現(xiàn)步驟4:處理數(shù)據(jù)
      String result = new String(data, 0, mPacket.getLength());
      System.out.println(result);
      /**** 回復客戶端 ****************/
      byte[] response = "我是UDP服務端,已經(jīng)回到你的請求".getBytes();
      mPacket.setData(response);
      mSocket.send(mPacket);
      mSocket.close();
    } catch (SocketException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

簡單demo之UDP客戶端

public class UdpClient {
  private static String sendData = "我是UDP客戶端,請求連接服務端";
  public static void main(String[] args) {
    try {
      // 步驟1:指定服務器的信息
      InetAddress mAddress = InetAddress.getByName("localhost");
      int port = 9999;
      byte[] data = sendData.getBytes();
      // 步驟2:創(chuàng)建DatagramPacket
      DatagramPacket mPacket = new DatagramPacket(data, data.length,
          mAddress, port);
      // 步驟3:創(chuàng)建DatagramSocket
      DatagramSocket mSocket = new DatagramSocket();
      // 步驟4:向服務端發(fā)送數(shù)據(jù)
      mSocket.send(mPacket);
      /***** 下面接收服務器返回數(shù)據(jù) ***************************/
      // 實現(xiàn)步驟3:接收 數(shù)據(jù)
      mSocket.receive(mPacket);
      // 實現(xiàn)步驟4:處理數(shù)據(jù)
      String response = new String(data, 0, mPacket.getLength());
      System.out.println(response);
      // 關閉資源
      mSocket.close();
    } catch (UnknownHostException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (SocketException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
  }
}

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

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

相關文章

  • 2019年最新Java學習路線圖

    2019年最新Java學習路線圖

    不管你是不懂電腦的小白,還是已經(jīng)步入開發(fā)的大牛,這套路線路絕對不容錯過,路線圖的宗旨就是分享,專業(yè),便利,讓喜愛Java的人,都能平等的學習,感興趣的同學可以了解一下
    2019-03-03
  • java+mysql實現(xiàn)圖書館管理系統(tǒng)實戰(zhàn)

    java+mysql實現(xiàn)圖書館管理系統(tǒng)實戰(zhàn)

    這篇文章主要為大家詳細介紹了java+mysql實現(xiàn)圖書館管理系統(tǒng)實戰(zhàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • Java實現(xiàn)郵箱發(fā)送功能實例(阿里云郵箱推送)

    Java實現(xiàn)郵箱發(fā)送功能實例(阿里云郵箱推送)

    這篇文章主要給大家介紹了關于Java實現(xiàn)郵箱發(fā)送功能的相關資料,利用阿里云郵箱推送,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • Android token過期刷新處理的方法示例

    Android token過期刷新處理的方法示例

    這篇文章主要介紹了Android token過期刷新處理的方法示例,本文詳細的介紹了2種方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • SpringBoot服務監(jiān)控機制原理解析(面試官常問)

    SpringBoot服務監(jiān)控機制原理解析(面試官常問)

    這篇文章主要介紹了SpringBoot服務監(jiān)控機制原理解析(面試官常問),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-04-04
  • Java集合源碼全面分析

    Java集合源碼全面分析

    下面小編就為大家?guī)硪黄狫ava集合源碼全面分析。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-07-07
  • Java動態(tài)腳本Groovy獲取Bean技巧

    Java動態(tài)腳本Groovy獲取Bean技巧

    這篇文章主要給大家分享的是Java動態(tài)腳本Groovy獲取Bean技巧,在Java代碼中當我們需要一個Bean對象,通常會使用spring中@Autowired注解,用來自動裝配對象。下面我們一起進入文章學習個表格多 詳細內(nèi)容吧

    2021-12-12
  • springboot配置多數(shù)據(jù)源的一款框架(dynamic-datasource-spring-boot-starter)

    springboot配置多數(shù)據(jù)源的一款框架(dynamic-datasource-spring-boot-starter

    dynamic-datasource-spring-boot-starter 是一個基于 springboot 的快速集成多數(shù)據(jù)源的啟動器,今天通過本文給大家分享這款框架配置springboot多數(shù)據(jù)源的方法,一起看看吧
    2021-09-09
  • shiro與spring?security用自定義異常處理401錯誤

    shiro與spring?security用自定義異常處理401錯誤

    這篇文章主要介紹了shiro與spring?security用自定義異常處理401錯誤,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java讀取properties配置文件時,出現(xiàn)中文亂碼的解決方法

    Java讀取properties配置文件時,出現(xiàn)中文亂碼的解決方法

    下面小編就為大家?guī)硪黄狫ava讀取properties配置文件時,出現(xiàn)中文亂碼的解決方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-11-11

最新評論