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

溫馨提示×

溫馨提示×

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

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

java中UDP通信客戶端與服務器端的示例分析

發布時間:2021-08-23 10:35:26 來源:億速云 閱讀:126 作者:小新 欄目:編程語言

小編給大家分享一下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

马尔康县| 当阳市| 宜兴市| 视频| 西青区| 木兰县| 东乌珠穆沁旗| 班玛县| 柞水县| 莆田市| 涿州市| 海丰县| 福州市| 出国| 怀化市| 手游| 和龙市| 彭山县| 黄骅市| 泽州县| 青岛市| 阳东县| 石门县| 祁东县| 夏邑县| 建瓯市| 达拉特旗| 汤阴县| 阜南县| 安庆市| 昌江| 双峰县| 商都县| 沐川县| 章丘市| 搜索| 德阳市| 德安县| 特克斯县| 渝中区| 甘孜|