Java怎么实现基于UDP协议的网络通信UDP编程


这篇文章主要介绍“Java怎么实现基于UDP协议的网络通信UDP编程”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java怎么实现基于UDP协议的网络通信UDP编程”文章能帮助大家解决问题。

UDP编程通信

基本介绍

  • 类DatagramSocket和DatagramPacket【数据包/数据报】实现了基于UDP协议网络程序。

  • UDP数据报通过数据报套接字DatagramSocket发送和接收,系统不保证UDP数据报一定能安全送到目的地,也不确信什么时候可以抵达。

  • DatagramPacket对象封装了UDP数据报,在数据报中包含了发送端的IP地址和端口号以及接收端的IP地址和端口号。

  • UDP协议中每个数据报都给出了完整的地址信息,因此无须建立发送方和接收方的连接。

基本流程

  • 核心的两个类/对象DatagramSocket域DatagramPacket

  • 建立发送端,接收端。

  • 建立数据包

  • 调用DatagramSocket的发送、接收方法

  • 关闭DatagramSocket。

UDP网络编程原理示意图

UDP说明:

  • 没有明确的服务端和客户端,演变成数据的发送端和接收端。

  • 接收数据和发生数据是通过DatagramSocket对象完成。

  • 将数据封装到DatagramPacket对象/装包。

  • 当接收到DatagramPacket对象,需要进行拆包,取出数据

  • DatagramSocket可以指定在哪个端口接收数据。

package&nbsp.study.srv.demo18;importjava.io.IOException;importjava.net.*;/***@version1.0*UDP发送端*/publicclassDemo11{publicstaticvoidmain(String[]args)throwsIOException{//1.创建DatagramSocket对象,准备发送和接收数据,在9998端口接收DatagramSocketdatagramSocket=newDatagramSocket(9998);//2.将需要发送的数据,封装到DatagramPacket对象Strings="发送的数据";byte[]buf=s.getBytes();InetAddressip=InetAddress.getByName("192.168.0.18");//说明:封装的DatagramPacket对象//buf内容字节数组//buf.length数据长度//ip主机(ip)//9999端口DatagramPacketpacket=newDatagramPacket(buf,buf.length,ip,9999);//发送数据datagramSocket.send(packet);//关闭资源//datagramSocket.close();System.out.println("发送完毕");//发送端变为接收端接收数据byte[]bytes=newbyte[1024];DatagramPacketdatagramPacket=newDatagramPacket(bytes,bytes.length);datagramSocket.receive(datagramPacket);intlength=datagramPacket.getLength();byte[]data=datagramPacket.getData();Stringstring=newString(data,0,length);System.out.println(string);datagramSocket.close();System.out.println("接受结束");}}
package&nbsp.study.srv.demo18;importjava.io.IOException;importjava.net.DatagramPacket;importjava.net.DatagramSocket;importjava.net.InetAddress;importjava.net.SocketException;/***@version1.0*UDP接收端*/publicclassDemo10{publicstaticvoidmain(String[]args)throwsIOException{//1.创建一个DatagramSocket对象,准备在9999接收数据DatagramSocketdatagramSocket=newDatagramSocket(9999);//2.构建一个DatagramPacket对象,准备接收数据//在UDP协议,一个数据包最大64kbyte[]buf=newbyte[1024];DatagramPacketpacket=newDatagramPacket(buf,buf.length);//3.接收方法将通过网络传输的DatagramPacket对象填充到packet里去。System.out.println("接收端等待接收");datagramSocket.receive(packet);//4.可以对packet进行拆包,取出数据,并显示//实际接收到的数据字节长度intlength=packet.getLength();//实际接收到的数据byte[]data=packet.getData();Stringstring=newString(data,0,length);System.out.println(string);//5.关闭资源//datagramSocket.close();System.out.println("接收结束");//接收端变为发送端,发送数据Strings="接收端变为发送端,发送数据";byte[]bytes=s.getBytes();DatagramPacketdatagramPacket=newDatagramPacket(bytes,bytes.length,InetAddress.getByName("192.168.0.18"),9998);datagramSocket.send(datagramPacket);datagramSocket.close();System.out.println("发送完毕");}}

关于“Java怎么实现基于UDP协议的网络通信UDP编程”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注主机评测网行业资讯频道,小编每天都会为大家更新不同的知识点。


上一篇:Vue3中的readonly特性及函数使用方法是什么

下一篇:Java中的堆和栈是什么


Copyright © 2002-2019 测速网 www.inhv.cn 皖ICP备2023010105号
测速城市 测速地区 测速街道 网速测试城市 网速测试地区 网速测试街道
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!

热门搜索 城市网站建设 地区网站制作 街道网页设计 大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器