當(dāng)前位置:
首頁 >
Java:网络编程之UDP的使用
發(fā)布時(shí)間:2025/7/14
33
豆豆
生活随笔
收集整理的這篇文章主要介紹了
Java:网络编程之UDP的使用
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
java.net? 類 DatagramSocket 此類表示用來發(fā)送和接收數(shù)據(jù)報(bào)包的套接字,數(shù)據(jù)報(bào)套接字是包投遞服務(wù)的發(fā)送或接收點(diǎn)。 java.net? 類 DatagramPacket 此類表示數(shù)據(jù)報(bào)包,數(shù)據(jù)報(bào)包用來實(shí)現(xiàn)無連接包投遞服務(wù)。 ? ?<1> void send(DatagramPacket p)? ? ? ? ? ? 從此套接字發(fā)送數(shù)據(jù)報(bào)包。 ?DatagramPacket(byte[] buf, int length, InetAddress address, int port)? ? ? ? ? ? 構(gòu)造數(shù)據(jù)報(bào)包,用來將長(zhǎng)度為 length 的包發(fā)送到指定主機(jī)上的指定端口號(hào)。 ? ?<2>void receive(DatagramPacket p)? ? ? ? ? ? 從此套接字接收數(shù)據(jù)報(bào)包。 ? ?DatagramPacket(byte[] buf, int length)? ? ? ? ? ? 構(gòu)造 DatagramPacket,用來接收長(zhǎng)度為 length 的數(shù)據(jù)包。?? ? 需求:通過UDP傳輸方式,將一段文字?jǐn)?shù)據(jù)發(fā)送出去。 思路:1.建立udpscoket服務(wù) ? ? ? ? ?2.提供數(shù)據(jù),并將數(shù)據(jù)封裝到數(shù)據(jù)包中 ? ? ? ? ?3.通過scoket服務(wù)的功能將數(shù)據(jù)發(fā)出去 ? ? ? ? ?4.關(guān)閉資源 //例子如下: import java.net.*;//發(fā)送數(shù)據(jù)
class UdpSend
{public static void main(String[] args)throws Exception{//1,建立udp服務(wù),通過DatagramScoket,建立端點(diǎn)DatagramSocket ds = new DatagramSocket(10000);//可以指定發(fā)送端口,例如10000,也可以不用指定,讓系統(tǒng)隨機(jī)默認(rèn)分配//2,確定數(shù)據(jù),并封裝成數(shù)據(jù)包.DatagramPacket(byte[] buf, int length, InetAddress address, int port)byte[] buf = "udp is coming".getBytes();//直接指定信息數(shù)據(jù)
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.105"),8888);//3,通過scoket服務(wù)的send方法發(fā)送數(shù)據(jù),
ds.send(dp);//4,關(guān)閉資源
ds.close(); }
}
?
需求:定義一個(gè)應(yīng)用程序,用于接收udp協(xié)議傳輸?shù)臄?shù)據(jù)并處理 思路:1.定義udpscoket服務(wù),通常會(huì)監(jiān)聽一個(gè)端口,其實(shí)就是給這個(gè)接受網(wǎng)絡(luò)應(yīng)用程序定義一個(gè)數(shù)字標(biāo)識(shí)。方便于明確哪些數(shù)據(jù)過來該應(yīng)用程序可以處理。 ? ? ? ? ?2.定義一個(gè)數(shù)據(jù)包,因?yàn)橐鎯?chǔ)要接收的數(shù)據(jù),因?yàn)閿?shù)據(jù)包對(duì)象中有更多功能可以提取字節(jié)數(shù)據(jù)中的不同數(shù)據(jù)信息 ? ? ? ? ?3.通過scoket服務(wù)的receive方法將接收到的字節(jié)數(shù)據(jù)存儲(chǔ)到定義好的數(shù)據(jù)包中 ? ? ? ? ?4.通過數(shù)據(jù)包對(duì)象的特有功能,將不同的數(shù)據(jù)取出,打印在控制臺(tái)上。 ? ? ? ? ?5.關(guān)閉資源 //例子如下: //接收數(shù)據(jù) class UdpReceive {public static void main(String[] args)throws Exception{//1,建立udp服務(wù),通過DatagramScoket,建立端點(diǎn)DatagramSocket ds = new DatagramSocket(8888);//必須指定接收端應(yīng)用程序的端口,用來匹配發(fā)送端數(shù)據(jù)包來的端口號(hào)while(true){//2,創(chuàng)建一個(gè)字節(jié)數(shù)據(jù)包用于存儲(chǔ)接收過來的字節(jié)數(shù)據(jù)byte[] buf = new byte[1024];DatagramPacket dp = new DatagramPacket(buf,buf.length);//3,通過scoket服務(wù)的receive方法接收數(shù)據(jù),ds.receive(dp);//阻塞式方法//4,將字節(jié)數(shù)據(jù)轉(zhuǎn)換為字符串并輸出String message = new String(dp.getData(),0,dp.getLength());String IP = dp.getAddress().getHostAddress();int port = dp.getPort();System.out.println("IP:"+IP+"::"+"port:"+port); System.out.println("message:"+message); }//5,關(guān)閉資源//ds.close(); } }?
轉(zhuǎn)載于:https://www.cnblogs.com/XYQ-208910/p/4918884.html
總結(jié)
以上是生活随笔為你收集整理的Java:网络编程之UDP的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Winform、WPF、Silverli
- 下一篇: (转)个例子让你了解Java反射机制