本篇內(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)
猜你還喜歡下面的內(nèi)容