(1)使用UDP协议编写简单发送方和接收方Demo
(1)使用UDP协议编写简单发送方和接收方Demo
代码走完后结束运行,所以发送和接受都是一次运行就会结束。
一.编写UDP协议接收方
package demo.soket.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetAddress; import java.net.SocketException; import java.net.UnknownHostException; /** * UDP协议发送方 * UDP协议特点: * 1.数据打包 * 2.不需要建立连接 * 3.不可靠协议,接不接收都不会报错 * 4.速度快 * 5.数据包限制在64k */ public class sendUdp { public static void main(String[] args) { /** * DatagramSocket:用于UDP协议的socket * * 1.创建对象,UDP协议 * 2.把想要发送的的数据打包(并且不超过64k) * 3.数据发送 * send(DatagramPacket p) * 4.关闭连接 */ DatagramSocket ds=null; try { //1.创建对象 ,UDP协议 ds=new DatagramSocket(); /** * 2.把想要发送的的数据打包(并且不超过64k) * 构造用于发送长度的分组的数据报包 length指定主机上到指定的端口号。 */ byte[] buf="UDP协议的demo测试数据".getBytes(); InetAddress address=InetAddress.getByName("192.168.95.2"); //指向接收方的ip和端口 DatagramPacket p=new DatagramPacket(buf, buf.length, address, 10086); //3.数据发送 ds.send(p); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }finally { //4.关闭连接 if(ds!=null) { ds.close(); } } } }
二.编写UDP协议服务端
package demo.soket.udp; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; import java.net.UnknownHostException; //UDP协议接收方 public class receiveUdp { public static void main(String[] args) { /** * 1.创建接收方对象:new DatagramSocket(10086);需指定接收的端口 * 2.创建一个数据包 * 3.从DatagramPacket包中接收数据 * receive(DatagramPacket p) 从此套接字接收数据报包。 */ DatagramSocket ds=null; try { //1.创建接收方对象,指定那个端口接收数据 ds=new DatagramSocket(10086); //2.创建一个数据包,指定数据 byte[] buf=new byte[1024]; DatagramPacket dp=new DatagramPacket(buf, buf.length); //3.接收数据,阻塞方法 ds.receive(dp); System.out.println("端口:"+dp.getPort()); System.out.println("ip:"+dp.getAddress()); //实际dp不一定有1024个字节 byte[] b=dp.getData(); //有多少取多少 String str=new String(b, 0,dp.getLength()); System.out.println("接收到的数据:"+str); } catch (SocketException e) { e.printStackTrace(); } catch (UnknownHostException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } }
三 .demo运行
1.先运行服务端
2.其次运行发送方
作者:皓月无边*半步青莲
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。