(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的主要内容,如果未能解决你的问题,请参考以下文章
如何获得 ActiveMQ - 单个发送方和接收方的 FIFO 要求?