一、概述:
- UDP(不可靠的传输,但是是最快的方式)
- 系统不保证UDP数据报一定能安全送到目的地,也不能确定什么时候可以抵达;
- DatagramSocket和DatagramPacket实现了基于UDP协议的网络编程;
- DatagramPacket对象封装了UDP数据报;
二、UDP的编程实现
1.创建一个数据包
- 每个数据不能大于64k,
- 每一个都记录数据信息,发送端的IP,端口号以及发送到接收端的IP和端口号
代码实现:
send()为发送端;accept为接收端;
1 import java.io.IOException;
2 import java.net.DatagramPacket;
3 import java.net.DatagramSocket;
4 import java.net.InetAddress;
5 import java.net.SocketException;
6 import java.net.UnknownHostException;
7
8 import org.junit.Test;
9 //关于UDP的编程实现,UDP(不可靠的传输,但是是最快的方式)
10 public class TestUdp {
11
12 @Test
13 public void send() {
14 DatagramSocket ds = null;
15 try {
16 ds = new DatagramSocket();
17 byte[] b = "我是要发送的数据".getBytes();
18 //创建一个数据报,每个数据不能大于64k,每一个都记录数据信息,发送端的IP,端口号以及发送到接收端的IP和端口号
19 DatagramPacket pack = new DatagramPacket(b, 0, b.length,InetAddress.getByName("127.0.0.1"),8989);
20 ds.send(pack);
21 ds.close();
22 } catch (SocketException e) {
23 // TODO Auto-generated catch block
24 e.printStackTrace();
25 } catch (UnknownHostException e) {
26 // TODO Auto-generated catch block
27 e.printStackTrace();
28 } catch (IOException e) {
29 // TODO Auto-generated catch block
30 e.printStackTrace();
31 }finally{
32 if(ds != null){
33 ds.close();
34 }
35 }
36 }
37
38 @Test
39 public void accept(){
40 DatagramSocket ds=null;
41 try {
42 ds = new DatagramSocket(8989);
43 byte[] b = new byte[1024];
44 DatagramPacket pack = new DatagramPacket(b, 0, b.length);
45 ds.receive(pack);
46 String str = new String (pack.getData(), 0, pack.getLength());
47 System.out.println(str);
48 } catch (SocketException e) {
49 // TODO Auto-generated catch block
50 e.printStackTrace();
51 } catch (IOException e) {
52 // TODO Auto-generated catch block
53 e.printStackTrace();
54 }finally{
55 if(ds != null){
56 ds.close();
57 }
58 }
59 }
60
我从来不相信什么懒洋洋的自由。我向往的自由是通过勤奋和努力实现的更广阔的人生。 我要做一个自由又自律的人,靠势必实现的决心认真地活着。