怎么理解javaUDP通信客戶(hù)端與服務(wù)器端-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“怎么理解java UDP通信客戶(hù)端與服務(wù)器端”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么理解java UDP通信客戶(hù)端與服務(wù)器端”吧!

創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),先為蒲江縣等服務(wù)建站,蒲江縣等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢(xún)服務(wù)。為蒲江縣企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。

最初Udp是以字節(jié)為單位進(jìn)行傳輸?shù)?,所以有很大的限?/p>

服務(wù)器端:

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

用戶(hù)端:

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é)為單位進(jìn)行傳輸,Udp的傳輸用了一個(gè)容器類(lèi)的東西,用來(lái)接收字節(jié)

先建一個(gè)字節(jié)數(shù)組,然后以這個(gè)數(shù)組創(chuàng)建容器。用來(lái)傳輸數(shù)據(jù)。

實(shí)例:傳輸一個(gè)Long類(lèi)型的數(shù)據(jù)

服務(wù)器端:

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

用戶(hù)端:

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é)為單位進(jìn)行傳輸?shù)?,所以要用到ByteArray的輸入和輸出流用來(lái)進(jìn)行數(shù)據(jù)的轉(zhuǎn)換。

另外,相較于Output流,Input流在構(gòu)建的時(shí)候需要一個(gè)數(shù)組作為參數(shù),用來(lái)存放數(shù)據(jù)。

在基本的Udp傳輸?shù)幕A(chǔ)上,代碼分為兩部分,一部分是把傳輸或接受的Long類(lèi)型數(shù)據(jù)轉(zhuǎn)換為byte類(lèi)型的數(shù)據(jù),然后是基本的數(shù)據(jù)傳輸。

另一方面,直接的字節(jié)流不能轉(zhuǎn)換為L(zhǎng)ong類(lèi)型,同理,剛接收的數(shù)據(jù)是字節(jié)類(lèi)型,直接打?。⊿ystem.out.println)是以字符串類(lèi)型輸出的,都需要通過(guò)Data的數(shù)據(jù)流進(jìn)行轉(zhuǎn)換。

到此,相信大家對(duì)“怎么理解java UDP通信客戶(hù)端與服務(wù)器端”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

名稱(chēng)欄目:怎么理解javaUDP通信客戶(hù)端與服務(wù)器端-創(chuàng)新互聯(lián)
轉(zhuǎn)載注明:http://bm7419.com/article16/cdiigg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營(yíng)銷(xiāo)推廣軟件開(kāi)發(fā)、自適應(yīng)網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷(xiāo)域名注冊(cè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護(hù)公司