JAVA編程實(shí)現(xiàn)UDP網(wǎng)絡(luò)通訊的方法示例
本文實(shí)例講述了JAVA編程實(shí)現(xiàn)UDP網(wǎng)絡(luò)通訊的方法。分享給大家供大家參考,具體如下:
UDP協(xié)議全稱是用戶數(shù)據(jù)報(bào)協(xié)議,在網(wǎng)絡(luò)中它與TCP協(xié)議一樣用于處理數(shù)據(jù)包,是一種無(wú)連接的協(xié)議。
在OSI模型中,在第四層——傳輸層,處于IP協(xié)議的上一層。UDP有不提供數(shù)據(jù)包分組、組裝和不能對(duì)數(shù)據(jù)包進(jìn)行排序的缺點(diǎn):
也就是說(shuō),當(dāng)報(bào)文發(fā)送之后,是無(wú)法得知其是否安全完整到達(dá)的。UDP用來(lái)支持那些需要在計(jì)算機(jī)之間傳輸數(shù)據(jù)的網(wǎng)絡(luò)應(yīng)用。
采用UDP協(xié)議要先把數(shù)據(jù)定義成數(shù)據(jù)報(bào)(Datagram)并在數(shù)據(jù)報(bào)中指明數(shù)據(jù)所要達(dá)到的Socket,再進(jìn)行數(shù)據(jù)傳遞。
主要涉及的兩個(gè)類:
DatagramPacket:數(shù)據(jù)報(bào)包類
DatagramSocket:數(shù)據(jù)端對(duì)端通訊類
簡(jiǎn)單demo之UDP服務(wù)端:
public class UdpServer { public static void main(String[] args) { // 實(shí)現(xiàn)步驟1:創(chuàng)建DatagramSokcet try { DatagramSocket mSocket = new DatagramSocket(9999); // 實(shí)現(xiàn)步驟2:創(chuàng)建DatagramPacket byte[] data = new byte[1024]; DatagramPacket mPacket = new DatagramPacket(data, data.length); // 實(shí)現(xiàn)步驟3:接收 數(shù)據(jù) mSocket.receive(mPacket); // 實(shí)現(xiàn)步驟4:處理數(shù)據(jù) String result = new String(data, 0, mPacket.getLength()); System.out.println(result); /**** 回復(fù)客戶端 ****************/ byte[] response = "我是UDP服務(wù)端,已經(jīng)回到你的請(qǐng)求".getBytes(); mPacket.setData(response); mSocket.send(mPacket); mSocket.close(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
簡(jiǎn)單demo之UDP客戶端:
public class UdpClient { private static String sendData = "我是UDP客戶端,請(qǐng)求連接服務(wù)端"; public static void main(String[] args) { try { // 步驟1:指定服務(wù)器的信息 InetAddress mAddress = InetAddress.getByName("localhost"); int port = 9999; byte[] data = sendData.getBytes(); // 步驟2:創(chuàng)建DatagramPacket DatagramPacket mPacket = new DatagramPacket(data, data.length, mAddress, port); // 步驟3:創(chuàng)建DatagramSocket DatagramSocket mSocket = new DatagramSocket(); // 步驟4:向服務(wù)端發(fā)送數(shù)據(jù) mSocket.send(mPacket); /***** 下面接收服務(wù)器返回?cái)?shù)據(jù) ***************************/ // 實(shí)現(xiàn)步驟3:接收 數(shù)據(jù) mSocket.receive(mPacket); // 實(shí)現(xiàn)步驟4:處理數(shù)據(jù) String response = new String(data, 0, mPacket.getLength()); System.out.println(response); // 關(guān)閉資源 mSocket.close(); } catch (UnknownHostException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SocketException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
更多關(guān)于java相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Java Socket編程技巧總結(jié)》、《Java文件與目錄操作技巧匯總》、《Java數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Java操作DOM節(jié)點(diǎn)技巧總結(jié)》和《Java緩存操作技巧匯總》
希望本文所述對(duì)大家java程序設(shè)計(jì)有所幫助。
- Java Socket實(shí)現(xiàn)UDP編程淺析
- Java網(wǎng)絡(luò)編程之UDP網(wǎng)絡(luò)通信詳解
- Java網(wǎng)絡(luò)編程之UDP實(shí)現(xiàn)原理解析
- Java網(wǎng)絡(luò)編程UDP協(xié)議發(fā)送接收數(shù)據(jù)
- Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)消息發(fā)送及聊天
- Java網(wǎng)絡(luò)編程UDP實(shí)現(xiàn)多線程在線聊天
- Java編程使用UDP建立群聊系統(tǒng)代碼實(shí)例
- Java實(shí)現(xiàn)基于UDP協(xié)議的網(wǎng)絡(luò)通信UDP編程
相關(guān)文章
java+mysql實(shí)現(xiàn)圖書館管理系統(tǒng)實(shí)戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了java+mysql實(shí)現(xiàn)圖書館管理系統(tǒng)實(shí)戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12Java實(shí)現(xiàn)郵箱發(fā)送功能實(shí)例(阿里云郵箱推送)
這篇文章主要給大家介紹了關(guān)于Java實(shí)現(xiàn)郵箱發(fā)送功能的相關(guān)資料,利用阿里云郵箱推送,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問(wèn))
這篇文章主要介紹了SpringBoot服務(wù)監(jiān)控機(jī)制原理解析(面試官常問(wèn)),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04Java動(dòng)態(tài)腳本Groovy獲取Bean技巧
這篇文章主要給大家分享的是Java動(dòng)態(tài)腳本Groovy獲取Bean技巧,在Java代碼中當(dāng)我們需要一個(gè)Bean對(duì)象,通常會(huì)使用spring中@Autowired注解,用來(lái)自動(dòng)裝配對(duì)象。下面我們一起進(jìn)入文章學(xué)習(xí)個(gè)表格多 詳細(xì)內(nèi)容吧2021-12-12springboot配置多數(shù)據(jù)源的一款框架(dynamic-datasource-spring-boot-starter
dynamic-datasource-spring-boot-starter 是一個(gè)基于 springboot 的快速集成多數(shù)據(jù)源的啟動(dòng)器,今天通過(guò)本文給大家分享這款框架配置springboot多數(shù)據(jù)源的方法,一起看看吧2021-09-09shiro與spring?security用自定義異常處理401錯(cuò)誤
這篇文章主要介紹了shiro與spring?security用自定義異常處理401錯(cuò)誤,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-11-11Java讀取properties配置文件時(shí),出現(xiàn)中文亂碼的解決方法
下面小編就為大家?guī)?lái)一篇Java讀取properties配置文件時(shí),出現(xiàn)中文亂碼的解決方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-11-11