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

Java Socket編程實例(二)- UDP基本使用

 更新時間:2016年06月15日 09:26:12   作者:kingxss  
這篇文章主要講解Java Socket編程中UDP的基本使用,希望能給大家做一個參考。

一.服務端代碼:

import java.io.*; 
import java.net.*; 
 
public class UDPEchoServer { 
 
  private static final int ECHOMAX = 255; // Maximum size of echo datagram 
 
  public static void main(String[] args) throws IOException { 
 
    int servPort = 5500; // Server port 
 
    DatagramSocket socket = new DatagramSocket(servPort); 
    DatagramPacket packet = new DatagramPacket(new byte[ECHOMAX], ECHOMAX); 
 
    while (true) { // Run forever, receiving and echoing datagrams 
      socket.receive(packet); // Receive packet from client 
      System.out.println("Handling client at " + packet.getAddress().getHostAddress() + " on port " + packet.getPort()); 
      socket.send(packet); // Send the same packet back to client 
      packet.setLength(ECHOMAX); // Reset length to avoid shrinking buffer 
    } 
    /* NOT REACHED */ 
  } 
} 

二.客戶端代碼:

import java.net.*; 
import java.io.*; 
 
public class UDPEchoClientTimeout { 
 
  private static final int TIMEOUT = 3000; // Resend timeout (milliseconds) 
  private static final int MAXTRIES = 5; // Maximum retransmissions 
 
  public static void main(String[] args) throws IOException { 
    InetAddress serverAddress = InetAddress.getByName("127.0.0.1"); // Server address 
    int servPort = 5500; // Server port 
    // Convert the argument String to bytes using the default encoding 
    byte[] bytesToSend = "Hi, World".getBytes(); 
 
    DatagramSocket socket = new DatagramSocket(); 
    socket.setSoTimeout(TIMEOUT); // Maximum receive blocking time(milliseconds) 
    // Sending packet 
    DatagramPacket sendPacket = new DatagramPacket(bytesToSend, bytesToSend.length, serverAddress, servPort); 
 
    DatagramPacket receivePacket = // Receiving packet 
    new DatagramPacket(new byte[bytesToSend.length], bytesToSend.length); 
 
    int tries = 0; // Packets may be lost, so we have to keep trying 
    boolean receivedResponse = false; 
    do { 
      socket.send(sendPacket); // Send the echo string 
      try { 
        socket.receive(receivePacket); // Attempt echo reply reception 
 
        if (!receivePacket.getAddress().equals(serverAddress)) {// Check 
                                    // source 
          throw new IOException("Received packet from an unknown source"); 
        } 
        receivedResponse = true; 
      } catch (InterruptedIOException e) { // We did not get anything 
        tries += 1; 
        System.out.println("Timed out, " + (MAXTRIES - tries) + " more tries..."); 
      } 
    } while ((!receivedResponse) && (tries < MAXTRIES)); 
 
    if (receivedResponse) { 
      System.out.println("Received: " + new String(receivePacket.getData())); 
    } else { 
      System.out.println("No response -- giving up."); 
    } 
    socket.close(); 
  }
} 

上述代碼的UDP服務端是單線程,一次只能服務一個客戶端。

以上就是本文的全部內容,查看更多Java的語法,大家可以關注:《Thinking in Java 中文手冊》、《JDK 1.7 參考手冊官方英文版》、《JDK 1.6 API java 中文參考手冊》、《JDK 1.5 API java 中文參考手冊》,也希望大家多多支持腳本之家。

相關文章

  • 詳解Java圖形化編程中的鼠標事件設計

    詳解Java圖形化編程中的鼠標事件設計

    這篇文章主要介紹了Java圖形化編程中的鼠標事件設計,是Java的GUI開發(fā)中的基礎部分,需要的朋友可以參考下
    2015-10-10
  • Java中LinkedHashSet的實現(xiàn)原理詳解

    Java中LinkedHashSet的實現(xiàn)原理詳解

    這篇文章主要介紹了Java中LinkedHasSet的實現(xiàn)原理詳解,LinkedHashSet?是具有可預知迭代順序的?Set?接口的哈希表和鏈接列表實現(xiàn),此實現(xiàn)與HashSet?的不同之處在于,后者維護著一個運行于所有條目的雙重鏈接列表,需要的朋友可以參考下
    2023-09-09
  • Spring boot集成swagger2生成接口文檔的全過程

    Spring boot集成swagger2生成接口文檔的全過程

    這篇文章主要給大家介紹了關于Spring boot集成swagger2生成接口文檔的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Spring boot具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-09-09
  • Spring+EHcache緩存實例詳解

    Spring+EHcache緩存實例詳解

    這篇文章主要為大家詳細介紹了Spring+EHcache緩存實例,EhCache是一個純Java的進程內緩存框架,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • java以json格式向后臺服務器接口發(fā)送請求的實例

    java以json格式向后臺服務器接口發(fā)送請求的實例

    下面小編就為大家分享一篇java以json格式向后臺服務器接口發(fā)送請求的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • SpringBoot實現(xiàn)圖片識別文字的四種方式小結

    SpringBoot實現(xiàn)圖片識別文字的四種方式小結

    本文主要介紹了SpringBoot實現(xiàn)圖片識別文字的四種方式,包括Tess4J,百度智能云,阿里云,騰訊云這四種,具有一定的參考價值,感興趣的可以了解一下
    2024-02-02
  • 詳細解讀Hibernate的緩存機制

    詳細解讀Hibernate的緩存機制

    這篇文章主要介紹了詳細解讀Hibernate的緩存機制,具有一定參考價值,這里分享給大家,供大家學習參閱。
    2017-10-10
  • IDEA的Project無法正常顯示的問題解決

    IDEA的Project無法正常顯示的問題解決

    本文主要介紹了IDEA的Project無法正常顯示的問題解決,文中通過圖文介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-02-02
  • Java泛型與數(shù)據(jù)庫應用實例詳解

    Java泛型與數(shù)據(jù)庫應用實例詳解

    這篇文章主要介紹了Java泛型與數(shù)據(jù)庫應用,結合實例形式詳細分析了java繼承泛型類實現(xiàn)增刪改查操作相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-08-08
  • Spring Boot 員工管理系統(tǒng)超詳細教程(源碼分享)

    Spring Boot 員工管理系統(tǒng)超詳細教程(源碼分享)

    這篇文章主要介紹了Spring Boot 員工管理系統(tǒng)超詳細教程(源碼分享),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-05-05

最新評論

芦溪县| 巴中市| 色达县| 巫溪县| 班玛县| 峡江县| 淮安市| 株洲市| 班戈县| 陆川县| 莱芜市| 刚察县| 如东县| 金乡县| 奉节县| 安吉县| 桑植县| 新安县| 汽车| 金山区| 鲁山县| 栾川县| 同江市| 诸暨市| 揭西县| 镇远县| 嵩明县| 乌海市| 蕉岭县| 绥滨县| 濉溪县| 新沂市| 山丹县| 普兰店市| 榆社县| 邯郸县| 玉树县| 宜丰县| 开封县| 雅江县| 安陆市|