重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
java中的UDP通信是什么?针对这个问题,今天小编总结了这篇文章,希望能帮助更多想解决这个问题的朋友找到更加简单易行的办法。
成都创新互联公司-专业网站定制、快速模板网站建设、高性价比太平网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式太平网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖太平地区。费用合理售后完善,10余年实体公司更值得信赖。介绍:
UDP为用户数据报协议,在java中操纵UDP使用JDK中java.net
包下的DatagramSocket
和DatagramPacket
类,可以方便的控制用户数据报文。
DatagramPacket
类将数据字节填充到UDP包中,这称为数据报。
DatagramSocket
用来发送这个包。如果接受数据,可以从DatagramSocket中接受一个 DatagramPack对象,然后从该包中读取数据的内容。
UDP是面向无连接的单工通信,它速度快。
1、 DatagramSocket类
构造函数:
DatagramSocket()
创建实例,通常用于客户端编程,他并没有特定的监听端口,仅仅使用一个临时的。
DatagramSocket(int port)
创建实例,并固定监听Port端口的报文。
DatagramSocket(int port, InetAddress laddr)
这是个非常有用的构建器,当一台机器拥有多于一个IP地址的时候,由它创建的实例仅仅接收来自LocalAddr的报文。
DatagramSocket(SocketAddress bindaddr)
bindaddr对象中指定了端口和地址。
常用函数:
receive(DatagramPacket p)
接收数据报文到p中。receive方法是阻塞的,如果没有接收到数据报包的话就会阻塞在哪里。
send(DatagramPacket p)
发送报文p到目的地。
setSoTimeout(int timeout)
设置超时时间,单位为毫秒。
close()
关闭DatagramSocket。在应用程序退出的时候,通常会主动的释放资源,关闭Socket,但是由于异常的退出可能造成资源无法回收。所以应该在程序完成的时候,主动使用此方法关闭Socket,或在捕获到异常后关闭Socket。
2、 DatagramPacket类
DatagramPacket类用于处理报文,将字节数组、目标地址、目标端口等数据包装成报文或者将报文拆卸成字节数组。
构造函数:
DatagramPacket(byte[] buf, int length, InetAddress addr, int port)
从buf字节数组中取出offset开始的、length长的数据创建数据对象,目标地址是addr,目标端口是port。
DatagramPacket(byte buf[], int offset, int length, SocketAddress address)
从buf字节数组中取出offset开始的、length长的数据创建数据对象,目标地址是address
常用函数:
getData() byte[]
从实例中取得报文中的字节数组编码。
setData(byte[] buf, int offset, int length)
设置数据报包中的数据内容
3、UDP通信的通信流程
UDP发送端:
1、建立updsocket服务。
2、提供数据,并将数据封装到数据包中。
3、通过socket服务的发送功能,将数据包发出去。
4、关闭资源。
UDP接收端:
1、定义udpsocket服务,通常会监听一个端口。
2、定义一个数据包,存储接收到的字节数据。
3、通过socket服务的receive方法将收到的数据存入已定义好的数据包中。
4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
5、关闭资源。
关于java中的UDP通信就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。