标签:
1. UDP协议发送数据 和 接收数据
UDP协议发送数据:
• 创建发送端的Socket对象
• 创建数据,并把数据打包
• 调用Socket对象的发送方法,发送数据包
• 释放资源
UDP协议接收数据:
• 创建接收端的Socket对象
• 创建数据包,接收数据(接收容器)
• 调用Socket对象的接收方法,接收数据包
• 解析数据包,并显示在控制台
• 释放资源
2. 代码实现
(1)首先我们先写发送端的程序,如下:
1 package com.himi.udpDemo; 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 * 12 * UDP协议发送数据: 13 * 1. 创建发送端的Socket对象 14 * 2. 创建数据,并把数据打包 15 * 3. 调用Socket对象的发送方法,发送数据包 16 * 4. 释放资源 17 * 18 */ 19 public class UdpSendDemo { 20 public static void main(String[] args) throws IOException { 21 //创建发送端的Socket对象,这里使用的UDP使用的客户端的Socket对象类是DatagramSocket. 22 //DatagramSocket:DatagramSocket() 23 DatagramSocket ds = new DatagramSocket(); 24 25 //创建数据,并把数据打包 26 //DatagramPacket:此类表示数据报包 27 /**DatagramPacket(byte[] buf, int length, InetAddress address, int port) 28 ** 构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。 29 */ 30 //创建数据 31 byte[] bytes = "风云雄霸天下,风云必胜. 风云合璧,摩柯无量. 圣心诀,玄武真功".getBytes(); 32 //IP地址对象 33 InetAddress address = InetAddress.getByName("49.123.72.145"); 34 //端口号 35 int port = 10086; 36 //数据打包 37 DatagramPacket dp = new DatagramPacket(bytes, bytes.length, address, port); 38 39 40 //调用Socket对象的发送方法,发送数据包 41 //public void send(DatagramPacket p) 42 ds.send(dp); 43 44 45 //释放资源 46 ds.close(); 47 48 } 49 50 }
(2)其次实现的是接收端的代码,如下:
1 package com.himi.udpDemo; 2 3 import java.io.IOException; 4 import java.net.DatagramPacket; 5 import java.net.DatagramSocket; 6 import java.net.InetAddress; 7 8 /** 9 * 10 * UDP协议接收数据: 11 * 1. 创建接收端的Socket对象 12 * 2. 创建数据包,接收数据(接收容器) 13 * 3. 调用Socket对象的接收方法,接收数据包 14 * 4. 解析数据包,并显示在控制台 15 * 5. 释放资源 16 * 17 */ 18 19 public class UdpReceiveDemo { 20 21 public static void main(String[] args) throws IOException { 22 // 创建接收端的Socket对象 23 //DatagramSocket(int port):创建数据报套接字并将其绑定到本地主机上的指定端口 24 DatagramSocket ds = new DatagramSocket(10086); 25 26 //创建数据包,接收数据(接收容器) 27 //DatagramPacket(byte[] buf, int length) 28 byte[] bytes = new byte[1024]; 29 int length = bytes.length; 30 31 DatagramPacket dp = new DatagramPacket(bytes, length); 32 33 //调用Socket对象的接收方法,接收数据包 34 // public void receive(DatagramPacket p) 35 ds.receive(dp);//阻塞式方法 36 37 //解析数据包,并显示在控制台 38 //获取对方的IP 39 //public InetAddress getAddress() 40 InetAddress address = dp.getAddress(); 41 String IP = address.getHostAddress(); 42 43 //public byte[] getData():获取数据的缓冲区 44 //public int getLength():获取数据的实际长度 45 byte[] bys = dp.getData(); 46 int len = dp.getLength(); 47 String s = new String(bys,0,len); 48 49 System.out.println("发送端"+IP+"的数据:"+s); 50 51 52 //释放资源 53 ds.close(); 54 55 56 57 } 58 59 }
(3)运行:
-->先运行接收端(类似于先开启服务器)
-->再运行发送端,这个时候,上面的接收端控制台,就会显示发送端发送过来的数据,效果如下:
Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据
标签:
原文地址:http://www.cnblogs.com/hebao0514/p/4858969.html