(2)使用UDP协议编写简单发送方和接收方Demo

Posted kdes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(2)使用UDP协议编写简单发送方和接收方Demo相关的知识,希望对你有一定的参考价值。

(2)使用UDP协议编写简单发送方和接收方Demo

此demo的作用为不停止的话会一直不停的接收和发送

一.编写UDP协议接收方,循环接受,输入886退出

 1   package demo.soket.udp;
 2   ?
 3   import java.io.IOException;
 4   import java.net.DatagramPacket;
 5   import java.net.DatagramSocket;
 6   import java.net.InetAddress;
 7   import java.net.SocketException;
 8   import java.net.UnknownHostException;
 9   ?
10   /**
11    * UDP协议发送方
12    * UDP协议特点:
13    * 1.数据打包
14    * 2.不需要建立连接
15    * 3.不可靠协议,接不接收都不会报错
16    * 4.速度快
17    * 5.数据包限制在64k
18    */
19   public class sendUdp {
20       public static void main(String[] args) {
21           /**
22            *  DatagramSocket:用于UDP协议的socket
23            *  
24            *  1.创建对象,UDP协议
25            *  2.把想要发送的的数据打包(并且不超过64k)
26            *  3.数据发送 
27            *  send(DatagramPacket p) 
28            *  4.关闭连接
29            */
30           DatagramSocket ds=null;
31           try {
32               //1.创建对象 ,UDP协议
33               ds=new DatagramSocket();
34               /**
35                * 2.把想要发送的的数据打包(并且不超过64k)
36                * 构造用于发送长度的分组的数据报包 length指定主机上到指定的端口号。 
37                */
38               byte[] buf="UDP协议的demo测试数据".getBytes();
39               InetAddress address=InetAddress.getByName("192.168.95.2");
40               //指向接收方的ip和端口
41               DatagramPacket p=new DatagramPacket(buf, buf.length, address, 10086);
42               //3.数据发送 
43               ds.send(p);
44           } catch (SocketException e) {
45               e.printStackTrace();
46           } catch (UnknownHostException e) {
47               e.printStackTrace();
48           } catch (IOException e) {
49               e.printStackTrace();
50           }finally {
51               //4.关闭连接
52               if(ds!=null) {
53                   ds.close();
54               }
55           }   
56       }
57   }
58   ?

 

二.编写UDP协议服务端,循环接收

 1 package demo.soket.udp;
 2   ?
 3   import java.io.IOException;
 4   import java.net.DatagramPacket;
 5   import java.net.DatagramSocket;
 6   import java.net.SocketException;
 7   import java.net.UnknownHostException;
 8   ?
 9   //UDP协议接收方
10   public class receiveUdp {
11       public static void main(String[] args) {
12           /**
13            *  1.创建接收方对象:new DatagramSocket(10000);需指定接收的端口
14            *  2.创建一个数据包
15            *  3.从DatagramPacket包中接收数据
16            *  receive(DatagramPacket p) 从此套接字接收数据报包。 
17            */
18           DatagramSocket ds=null;
19           try {
20               //1.创建接收方对象,指定那个端口接收数据
21               ds=new DatagramSocket(10000);
22               while(true) {
23                   //2.创建一个数据包,指定数据
24                   byte[] buf=new byte[1024];
25                   DatagramPacket dp=new DatagramPacket(buf, buf.length);
26                   //3.接收数据,阻塞方法
27                   ds.receive(dp);
28                   //实际dp不一定有1024个字节
29                   byte[] b=dp.getData();
30                   //有多少取多少,获取b中的内容,从0下标处开始,直到dp.getLength()结束
31                   String str=new String(b, 0,dp.getLength());
32                   System.out.println("接收到的数据:"+str);
33               }
34           } catch (SocketException e) {
35               e.printStackTrace();
36           } catch (UnknownHostException e) {
37               e.printStackTrace();
38           } catch (IOException e) {
39               e.printStackTrace();
40           }
41       }
42   }
43   ?

 

 

三 .demo运行

技术图片

 

 技术图片

 

以上是关于(2)使用UDP协议编写简单发送方和接收方Demo的主要内容,如果未能解决你的问题,请参考以下文章

如何在 UDP 广播中处理同时作为发送方和接收方的客户端

第8章 传输层_TCP/UDP协议的应用场景

如何获得 ActiveMQ - 单个发送方和接收方的 FIFO 要求?

发送方和接收方的 google-cast-sdk 音频和字幕手动处理

TCP 与 UDP 协议简介

两类传输协议:TCP,UDP