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

java編程實(shí)現(xiàn)基于UDP協(xié)議傳輸數(shù)據(jù)的方法

 更新時間:2015年11月05日 15:17:03   作者:awj3584  
這篇文章主要介紹了java編程實(shí)現(xiàn)基于UDP協(xié)議傳輸數(shù)據(jù)的方法,較為詳細(xì)的分析了UDP協(xié)議的原理及Java編程實(shí)現(xiàn)數(shù)據(jù)傳輸客戶端與服務(wù)器端的相關(guān)技巧,需要的朋友可以參考下

本文實(shí)例講述了java編程實(shí)現(xiàn)基于UDP協(xié)議傳輸數(shù)據(jù)的方法。分享給大家供大家參考,具體如下:

UDP協(xié)議(User Datagram Protocol,用戶數(shù)據(jù)報協(xié)議)不同于TCP協(xié)議,它是不可能靠的,但是它比TCP協(xié)議具有更快的傳輸速度,UDP發(fā)送的數(shù)據(jù)單元稱為數(shù)據(jù)報,當(dāng)網(wǎng)絡(luò)傳輸U(kuò)DP傳輸U(kuò)DP數(shù)據(jù)報是無法保證數(shù)據(jù)能夠到達(dá)目的地,也無法保證按發(fā)送的順序到達(dá)目的地,也就是說先發(fā)送了“hello”,再發(fā)送了“world”,但接收方可能會先收到“world”,再收到“hello”,也有可能收不到數(shù)據(jù),為什么呢?因?yàn)樗遣豢赡芸康模趥鬏斖局锌赡軄G失了。但UDP比TCP跟適合與傳輸實(shí)時音頻。下面是一個簡單的UPD傳輸數(shù)據(jù)報的例子

服務(wù)器端:

import java.io.IOException; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.SocketException; 
public class EchoServer { 
 private DatagramSocket datagramSocket; 
 private final int port = 8088; 
 public static void main(String[] args) throws SocketException { 
  new EchoServer().service(); 
 } 
 public EchoServer() throws SocketException{ 
  datagramSocket = new DatagramSocket(port); 
  System.out.println("服務(wù)器啟動"); 
 } 
 public String echo(String msg){ 
  return "echo:"+msg; 
 } 
 public void service(){ 
  while (true) { 
   try { 
    DatagramPacket packet = new DatagramPacket(new byte[512], 512); 
    datagramSocket.receive(packet); 
    String msg = new String(packet.getData(), 0, packet.getLength()); 
    System.out.println(packet.getAddress()+"/"+packet.getPort()+" msg:"+msg); 
    packet.setData(echo(msg).getBytes()); 
    datagramSocket.send(packet); 
   } catch (IOException e) { 
    e.printStackTrace(); 
   } 
  } 
 } 
}

客戶端:

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.net.DatagramPacket; 
import java.net.DatagramSocket; 
import java.net.InetAddress; 
import java.net.SocketException; 
public class EchoClient { 
 private String remoteHost="localhost"; 
 private int remotePort=8088; 
 private DatagramSocket datagramSocket; 
 public EchoClient() throws SocketException{ 
  datagramSocket = new DatagramSocket(); 
 } 
 public static void main(String[] args) throws SocketException { 
  new EchoClient().talk(); 
 } 
 public void talk(){ 
  try { 
   BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); 
   String msg = null; 
   InetAddress address = InetAddress.getByName(remoteHost); 
   while ((msg=reader.readLine())!=null) { 
    //發(fā)送數(shù)據(jù)報 
    byte [] buffer = msg.getBytes(); 
    DatagramPacket packet = new DatagramPacket(buffer,buffer.length, address, remotePort); 
    datagramSocket.send(packet); 
    //接收數(shù)據(jù)報 
    DatagramPacket inputPacket = new DatagramPacket(new byte[512], 512); 
    datagramSocket.receive(inputPacket); 
    System.out.println(new String(inputPacket.getData(), 0 , inputPacket.getLength())); 
    if("bye".equals(msg)){ 
     break; 
    } 
   } 
  } catch (IOException e) { 
   e.printStackTrace(); 
  }finally{ 
   datagramSocket.close(); 
  } 
}

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

相關(guān)文章

  • Springboot配置管理Externalized?Configuration深入探究

    Springboot配置管理Externalized?Configuration深入探究

    這篇文章主要介紹了Springboot配置管Externalized?Configuration深入探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • PowerJob的MapProcessor工作流程源碼解讀

    PowerJob的MapProcessor工作流程源碼解讀

    這篇文章主要為大家介紹了PowerJob的MapProcessor工作流程源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2024-01-01
  • Java關(guān)于BeabUtils.copyproperties的用法

    Java關(guān)于BeabUtils.copyproperties的用法

    這篇文章主要介紹了Java關(guān)于BeabUtils.copyproperties的用法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java?InheritableThreadLocal使用示例詳解

    Java?InheritableThreadLocal使用示例詳解

    InheritableThreadLocal繼承了ThreadLocal,此類擴(kuò)展了ThreadLocal以提供從父線程到子線程的值的繼承:當(dāng)創(chuàng)建子線程時,子線程接收父線程具有的所有可繼承線程局部變量的初始值。?通常子線程的值與父線程的值是一致的
    2022-09-09
  • mybatisPlus實(shí)現(xiàn)倒序拼接字符串

    mybatisPlus實(shí)現(xiàn)倒序拼接字符串

    這篇文章主要介紹了mybatisPlus實(shí)現(xiàn)倒序拼接字符串方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java面試題解析之判斷以及防止SQL注入

    Java面試題解析之判斷以及防止SQL注入

    這篇文章主要介紹了Java面試題解析之判斷以及防止SQL注入,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Java鎖的升級策略 偏向鎖 輕量級鎖 重量級鎖

    Java鎖的升級策略 偏向鎖 輕量級鎖 重量級鎖

    在本文中小編給的大家整理了關(guān)于Java鎖的升級策略 偏向鎖 輕量級鎖 重量級鎖的相關(guān)知識點(diǎn)內(nèi)容,需要的朋友們參考下。
    2019-06-06
  • mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼

    mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼

    本文主要介紹了mybatis-plus實(shí)現(xiàn)邏輯刪除的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • java實(shí)現(xiàn)二維碼生成功能詳細(xì)示例

    java實(shí)現(xiàn)二維碼生成功能詳細(xì)示例

    這篇文章主要給大家介紹了關(guān)于java實(shí)現(xiàn)二維碼生成功能的相關(guān)資料,隨著信息化時代的到來,二維碼作為一種信息傳遞的工具,越來越受到人們的歡迎,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • java控制臺實(shí)現(xiàn)拼圖游戲

    java控制臺實(shí)現(xiàn)拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了java控制臺實(shí)現(xiàn)拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07

最新評論

乌兰浩特市| 新丰县| 鄂州市| 淮南市| 普兰县| 盐山县| 新疆| 师宗县| 太原市| 报价| 宜兴市| 许昌县| 临夏县| 图木舒克市| 新沂市| 太仓市| 萝北县| 东阿县| 吉木萨尔县| 峨山| 清河县| 安达市| 当雄县| 宁夏| 沂源县| 莆田市| 保德县| 镇康县| 靖远县| 武邑县| 玛沁县| 横山县| 乳山市| 太谷县| 北辰区| 璧山县| 营口市| 原阳县| 海口市| 邯郸县| 颍上县|