900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

时间:2019-12-02 23:34:54

相关推荐

Java基础知识强化之网络编程笔记03:UDP之UDP协议发送数据 和 接收数据

1.UDP协议发送数据 和 接收数据

UDP协议发送数据:

•创建发送端的Socket对象

创建数据,并把数据打包

调用Socket对象的发送方法,发送数据包

释放资源

UDP协议接收数据:

•创建接收端的Socket对象

•创建数据包,接收数据(接收容器)

•调用Socket对象的接收方法,接收数据包

•解析数据包,并显示在控制台

•释放资源

2. 代码实现

(1)首先我们先写发送端的程序,如下:

1 package com.himi.udpDemo; 2 3 import java.io.IOException; 4 import .DatagramPacket; 5 import .DatagramSocket; 6 import .InetAddress; 7 import .SocketException; 8 import .UnknownHostException; 9 10 /**11 * 12 * UDP协议发送数据:13 * 1. 创建发送端的Socket对象14 * 2. 创建数据,并把数据打包15 * 3. 调用Socket对象的发送方法,发送数据包16 * 4. 释放资源17 *18 */19 public class UdpSendDemo {20public 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 .DatagramPacket; 5 import .DatagramSocket; 6 import .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 21public 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 //获取对方的IP39 //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)运行:

-->先运行接收端(类似于先开启服务器)

-->再运行发送端,这个时候,上面的接收端控制台,就会显示发送端发送过来的数据,效果如下:

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。