91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么理解java UDP通信客戶端與服務器端

發布時間:2021-11-11 14:54:31 來源:億速云 閱讀:168 作者:iii 欄目:編程語言

本篇內容主要講解“怎么理解java UDP通信客戶端與服務器端”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“怎么理解java UDP通信客戶端與服務器端”吧!

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

服務器端:

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();//        }    }}

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

先建一個字節數組,然后以這個數組創建容器。用來傳輸數據。

實例:傳輸一個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是以字節為單位進行傳輸的,所以要用到ByteArray的輸入和輸出流用來進行數據的轉換。

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

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

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

到此,相信大家對“怎么理解java UDP通信客戶端與服務器端”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

德钦县| 定边县| 三明市| 罗定市| 河源市| 凤冈县| 阳新县| 长泰县| 图片| 莎车县| 彝良县| 武夷山市| 勃利县| 韶山市| 门源| 柘城县| 恭城| 绥阳县| 台中市| 徐州市| 安乡县| 赤壁市| 贺州市| 芦溪县| 伊吾县| 东方市| 闽侯县| 天等县| 屏山县| 通道| 徐汇区| 乌什县| 景泰县| 宣武区| 嘉峪关市| 登封市| 怀柔区| 大名县| 南部县| 岫岩| 合川市|