十五(三)、网络编程之UDP

一、概述:

  • 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 }

 

posted @ 2017-02-22 13:44  啄木鸟伍迪  阅读(131)  评论(0编辑  收藏  举报
//火箭 GenerateContentList();