首先如果TCP學過以後,再看UDP進行數據傳輸也是大同小異的,只是用到的類不同
UDP進行傳輸需要DataSocket和Datapacket類,Datapacket叫數據報,每一個數據報不能大於64k,都記錄著數據信息,發送端的IP、端口號,
以及要發送到的接收端的IP、端口號。
UDP進行傳輸是將數據全部打包,然後一起發過去,容易造成數據丟失,但速度較快,比如要下載一個電影,缺失幾偵並沒有什麼影響,但需要快速下載,這個時候可以選擇UDP進行傳輸,所謂各有所長,具體選擇那種方式還是要看具體需要。
接下來附加一個UDP進行文字傳輸,然後接收端打印到控制台上
1 package com.UDP.java;
2
3 import java.io.IOException;
4 import java.net.DatagramPacket;
5 import java.net.DatagramSocket;
6 import java.net.InetAddress;
7 import org.junit.Test;
8
9 public class TestUDP {
10 // 發送端
11 @Test
12 public void send() {
13 DatagramSocket ds = null;
14 try {
15 ds = new DatagramSocket();
16 // 創建一個數據報,每一個數據報不能大於64k,都記錄著數據信息,發送端的IP、端口號,以及要發送到
17 // 的接收端的IP、端口號。
18 byte[] b = "我是發送端".getBytes();
19 DatagramPacket pack = new DatagramPacket(b, 0, b.length,
20 InetAddress.getByName("192.168.1.101"), 9090);
21 ds.send(pack);
22 } catch (IOException e) {
23 e.printStackTrace();
24 } finally {
25 if (ds != null) {
26 ds.close();
27 }
28 }
29 }
30
31 // 接收端
32 @Test
33 public void receive() {
34 DatagramSocket ds = null;
35 try {
36 ds = new DatagramSocket(9090);
37 byte[] b = new byte[1024];
38 DatagramPacket pack = new DatagramPacket(b, 0, b.length);
39 ds.receive(pack);
40 String str = new String(pack.getData(), 0, pack.getLength());
41 System.out.println(str);
42 }catch (IOException e) {
43 e.printStackTrace();
44 }
45 finally{
46 if(ds != null){
47 ds.close();
48 }
49 }
50 }
51 }