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 .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 .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中的堆和栈是什么
winlogins.exe是什么文件?winlogins.exe是不是病毒
winsock2.6.exe是什么文件?winsock2.6.exe是不是病毒
WinDefendor.dll是什么文件?WinDefendor.dll是不是病毒
系统目录是什么文件?系统目录是不是病毒
wholove.exe是什么文件?wholove.exe是不是病毒
winn.ini是什么文件?winn.ini是不是病毒
w6oou.dll是什么文件?w6oou.dll是不是病毒
winduxzawb.exe是什么文件?winduxzawb.exe是不是病毒
wuammgr32.exe是什么文件?wuammgr32.exe是不是病毒
windiws.exe是什么文件?windiws.exe是不是病毒