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

java UDP通信客戶端與服務器端實例分析

 更新時間:2020年01月19日 10:28:16   作者:qq_42412646  
這篇文章主要介紹了java UDP通信客戶端與服務器端,結合實例形式分析了java基于UDP通信的客戶端與服務器端具體實現技巧及相關操作注意事項,需要的朋友可以參考下

本文實例講述了java UDP通信客戶端與服務器端。分享給大家供大家參考,具體如下:

最初Udp是以字節(jié)為單位進行傳輸的,所以有很大的限制

服務器端:

import java.net.*;
public class TestUdpServer {
    public static void main(String[] args) throws Exception {
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf,buf.length);
//        try {
            DatagramSocket ds = new DatagramSocket(2345);
            while(true) {
                ds.receive(dp);
                System.out.println(new String(buf,0,dp.getLength()));    
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
        }
    }
}

用戶端:

import java.net.*;
public class TestUdpClient {
    public static void main(String[] args) throws Exception {
        byte[] buf = new byte[1024];
        buf = (new String("hello")).getBytes();
        DatagramPacket dp = new DatagramPacket(buf,buf.length,new InetSocketAddress("127.0.0.1",2345));
//        try {
            DatagramSocket ds = new DatagramSocket(5679);
            ds.send(dp);
            ds.close();
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
    }
}

注:由于必須以字節(jié)為單位進行傳輸,Udp的傳輸用了一個容器類的東西,用來接收字節(jié)

先建一個字節(jié)數組,然后以這個數組創(chuàng)建容器。用來傳輸數據。

實例:傳輸一個Long類型的數據

服務器端:

import java.io.*;
import java.net.*;
public class UdpServer {
    public static void main(String[] args) throws Exception {
        byte[] buf = new byte[1024];
        DatagramPacket dp = new DatagramPacket(buf,buf.length);
        DatagramSocket ds = new DatagramSocket(2345);
        while(true) {
            ByteArrayInputStream is = new ByteArrayInputStream(buf);
            DataInputStream dis = new DataInputStream(is);
            ds.receive(dp);
            System.out.println(dis.readLong());    
        }
    }
}

用戶端:

import java.io.*;
import java.net.*;
public class UdpClient {
    public static void main(String[] args) throws Exception {
        Long n = 10000L;
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        DataOutputStream dos = new DataOutputStream(os);
        dos.writeLong(n);
        byte[] buf = new byte[1024];
        buf = os.toByteArray();
        System.out.println(buf.length);
        DatagramPacket dp = new DatagramPacket(buf,buf.length,
                new InetSocketAddress("127.0.0.1",2345));
        DatagramSocket ds = new DatagramSocket(5679);
        ds.send(dp);
        ds.close();
    }
}

注:由于Udp是以字節(jié)為單位進行傳輸的,所以要用到ByteArray的輸入和輸出流用來進行數據的轉換。

另外,相較于Output流,Input流在構建的時候需要一個數組作為參數,用來存放數據。

在基本的Udp傳輸的基礎上,代碼分為兩部分,一部分是把傳輸或接受的Long類型數據轉換為byte類型的數據,然后是基本的數據傳輸。

另一方面,直接的字節(jié)流不能轉換為Long類型,同理,剛接收的數據是字節(jié)類型,直接打印(System.out.println)是以字符串類型輸出的,都需要通過Data的數據流進行轉換。

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

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

相關文章

  • MybatisX無法自動生成entity實體類的解決方法

    MybatisX無法自動生成entity實體類的解決方法

    本文主要介紹了MybatisX無法自動生成entity實體類的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java數據結構順序表從零基礎到精通進階

    Java數據結構順序表從零基礎到精通進階

    程序中經常需要將一組數據元素作為整體管理和使用,需要創(chuàng)建這種元素組,用變量記錄它們,傳進傳出函數等。一組數據中包含的元素個數可能發(fā)生變化,順序表則是將元素順序地存放在一塊連續(xù)的存儲區(qū)里,元素間的順序關系由它們的存儲順序自然表示
    2022-03-03
  • Java編程子類能否重寫父類的靜態(tài)方法探索

    Java編程子類能否重寫父類的靜態(tài)方法探索

    關于子類能否重寫父類的靜態(tài)方法,對像我這種初級的編程愛好者來說仍是值得討論的一件事,下面我們通過具體實例,對此問題進行簡單的探索。
    2017-10-10
  • idea文件上有鎖文件只讀不可編輯的解決

    idea文件上有鎖文件只讀不可編輯的解決

    這篇文章主要介紹了idea文件上有鎖文件只讀不可編輯的解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java并行執(zhí)行任務的幾種方案小結

    Java并行執(zhí)行任務的幾種方案小結

    這篇文章主要介紹了Java并行執(zhí)行任務的幾種方案小結,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java并發(fā)控制機制詳解

    Java并發(fā)控制機制詳解

    這篇文章主要為大家詳細介紹了Java并發(fā)控制機制,什么是Java并發(fā)控制機制,Java并發(fā)控制機制的作用,感興趣的小伙伴們可以參考一下
    2016-08-08
  • java8列表中通過stream流根據對象屬性去重的三種方式

    java8列表中通過stream流根據對象屬性去重的三種方式

    這篇文章主要介紹了java8列表中通過stream流根據對象屬性去重的三種方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot深入淺出分析初始化器

    SpringBoot深入淺出分析初始化器

    這篇文章主要介紹了SpringBoot初始化器的分析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • Spring注解@Configuration和@Component區(qū)別詳解

    Spring注解@Configuration和@Component區(qū)別詳解

    @Component和@Configuration都可以作為配置類,之前一直都沒覺得這兩個用起來有什么差別,可能有時程序跑的和自己想的有所區(qū)別也沒注意到,下面這篇文章主要給大家介紹了關于Spring注解@Configuration和@Component區(qū)別的相關資料,需要的朋友可以參考下
    2023-04-04
  • 解決使用gateway后靜態(tài)資源失效的問題

    解決使用gateway后靜態(tài)資源失效的問題

    這篇文章主要介紹了解決使用gateway后靜態(tài)資源失效的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07

最新評論