JAVA自学笔记,UDP程序设计

本文深入解析了UDP协议,一种用户数据报协议,强调其快速信息传输特性及不可靠性。介绍了UDP的基本模式,包括数据打包与发送,以及如何使用Java进行UDP程序设计。详细解释了DatagramSocket和DatagramPacket类的使用,以及多播数据报套接字MulticastSocket的特性和方法。
摘要由CSDN通过智能技术生成

UDP是User Datagram Protocol 的简称,中文名是用户数据报协议,它是网络信息传输的另一种形式。UDP通信和TCP通信不同,基于UDP的信息传递更快,但不提供可靠的保证。使用UDP传递数据时,用户无法知道数据是否能正确地到达主机,也不能确定到达目的地的顺序是否和发送的顺序相同。虽然UPD是一种不可靠的协议,但如果需要较快地传输信息,并能容忍小的错误,可以考虑使用UDP。
基于UDP同喜的基本模式如下:
1,将数据打包(简称数据包),然后将数据包发往目的地。
2,接收别人发来的数据包,然后查看数据包。

使用Java进行UDP程序设计

下面是使用Java进行UDP程序设计的步骤。

1,发送数据包

1,使用DatagramSocket()创建一个数据包套接字。
2,使用DatagramPacket(byte[] buf,int offset,int length,InetAddress address,int port)创建要发送的数据包。
3,使用DatagramSocket类的send()方法发送数据包。

2,接收数据包

1,使用DatagramSocket(int port)创建数据包套接字,绑定到指定的端口。
2,使用DatagramPacket(byte[] buf,int length)创建字节数组来接收数据包。
3,使用DatagramPacket类的receive()方法接收UDP包。
DatagramSocket类的receive()方法接收数据时,如果还没有可以接收的数据,在正常情况下receive()方法将阻塞,一直等到网络上有数据传来,receive()接收该数据并返回。如果网络上没有数据发送过来,receive()方法也没有阻塞,肯定是程序有问题,大多数是使用了一个被其他程序占用的端口号。

DatagramPacket类

java.net包中的DatagramPacket类用来表示数据包,该类的构造函数如下。
1,DatagramPacket(byte[] buf,int length):创建DatagramPacket对象,指定了数据包的内存空间和大小。
2,DatagramPacket(byte[] buf,int length,InetAddress address,int port):创建DatagramPacket对象,不仅指定了数据包的内存空间和大小,还指定了数据包的目标地址和端口。
在发送数据时,必须指定接收方的Socket地址和端口号,因此使用第二种构造函数可以创建发送数据的DatagramPacket对象。DatagramPacket的常用方法如下:
在这里插入图片描述

DatagramSocket类

java.net包中的DatagramSocket类用于表示发送和接受数据包的套接字,该类的构造函数有一下3中:
1,DatagramSocket():创建DatagramSocket对象,构造数据报套接字并将其绑定到本地主机上任何可用的端口。
2,DatagramSocket(int port):创建DatagramSocket对象,创建数据报套接字并将其绑定到本地主机上的指定端口。
3,DatagramSocket(int port,InetAddress addr):创建DatagramSocket对象,创建数据报套接字,并将其绑定到指定的本地地址,该构造函数适用于有多块网卡和多个IP地址的情况。
在接受程序时,必须指定一个端口号,不要让系统随机生成,此时可以使用第二种构造函数。比如你给你朋友写信,他的地址是不确定的那是不行的。但是在发送程序时,通常使用第一种构造函数,不指定端口号,这样系统就会为我们分配一个端口号,就像寄信的时候不需要去指定的邮局一样。
DatagramSocket类的常用方法如下表:
在这里插入图片描述
使用DatagramSocket类创建的套接字是单个的数据报套接字。UDP协议是一种多播数据传输协议,那么可以创建多播的数据报套接字吗?答案是肯定的,DatagramSocket类提供了一个子类MulticastSocket,它表示多播数据报套接字,该类用于发送和接受IP多播报。MulticastSocket类是一种(UDP)DatagramSocket,它具有加入Internet上其他多播主机的"组"的附加功能,多播组的IP地址范围在224.0.0.0和239.255.255.255的范围内(包括两者),但这里需要说明的是地址224.0.0.0虽然被保留,但不应该使用。
由于MuliticastSocket类是DatagramSocket类的子类,因此它包含DatagramSokcet类中的所有公有方法,除此之外,他还有两个特殊的方法joinGroup和leaveGroup,分别如下:
1,jionGroup(InetAddress mcastaddr):加入多播组,参数mcastaddr表示要加入的多播地址。
2,leaveGroup(InetAddress mcastaddr):离开多播组,参数mcastaddr表示要离开的多播地址。

UDP网络程序实例

根据前面所讲的网络编程的基本知识,以及UDP网络编程的特点,下面创建一个广播数据报程序。广播数据报是一种教新的技术,类似于电台广播,需要在指定的波段和频率上 广播信息,而收听者也要将收音机调到指定的波段,频率才可以收听广播内容。
先写一个广播主程序,向外发送播报信息。
在这里插入图片描述
运行结果:
在这里插入图片描述
下面写接收广播的程序:
在这里插入图片描述
运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值