本文實例為大家分享了java利用udp實現發送數據的具體代碼,供大家參考,具體內容如下
1.udp的特點
- 數據以包的形式發送數據
- udp是面向無連接的
- udp會丟失數據,是一種不安全的連接
- udp的傳輸速度較快
2.發送端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
package cn.uu710.SocketTest; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; public class Send1 { public static void main(String[] args) { try { DatagramSocket datagramSocket = new DatagramSocket(); String data = "這是張佑發送的消息!" ; DatagramPacket datagramPacket = new DatagramPacket(data.getBytes(),data.getBytes().length,InetAddress.getLocalHost(), 8088 ); //發送 System.out.println( "正在準備發送……" ); datagramSocket.send(datagramPacket); System.out.println( "已發送……" ); datagramSocket.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
3.接收端
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
package cn.uu710.SocketTest; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; import com.sun.org.apache.bcel.internal.generic.NEW; public class receive1 { public static void main(String[] args) { try { DatagramSocket datagramSocket = new DatagramSocket( 8088 ); byte [] b = new byte [ 1024 ]; DatagramPacket datagramPacket = new DatagramPacket(b,b.length); System.out.println( "正在準備接收……" ); //未接收之前為阻塞狀態 datagramSocket.receive(datagramPacket); System.out.println( "接收內容:" + new String(b, 0 ,b.length)); System.out.println( "已經接收……" ); datagramSocket.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |
4. 運行程序
先啟動接收端,再運行發送端
啟動接收端后,程序并未停止,因為還未接收到消息
再啟動發送端,此時接收端成功接收到消息,之后程序停止
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:https://blog.csdn.net/YOUYOU0710/article/details/106319753