基于UDP协议的Socket通信.ppt
《基于UDP协议的Socket通信.ppt》由会员分享,可在线阅读,更多相关《基于UDP协议的Socket通信.ppt(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基于UDP协议的Socket通信2本章内容1.UDP协议的基本概念协议的基本概念2.UDP数据报套接字数据报套接字DatagramSocketDatagramSocket的构造方法和主要方法的构造方法和主要方法DatagramSocket的选项设置的选项设置3.UDP数据报数据报DatagramPacketDatagramPacket的构造方法和主要方法的构造方法和主要方法传递基本类型数据和对象传递基本类型数据和对象UDP协议通信基本过程协议通信基本过程4.组播的基本概念及实现组播的基本概念及实现3UDP协议用户数据报协议(用户数据报协议(UDP)是一种基本的、低延时的)是一种基本的、低延时的
2、数据传输协议。数据传输协议。UDP的简单性不能保证数据传输的可靠性,但对另的简单性不能保证数据传输的可靠性,但对另一些更复杂的、自身提供面向链接功能的应用却很一些更复杂的、自身提供面向链接功能的应用却很适合。适合。UDP协议适合以下情况:转发路由表、数据交换、协议适合以下情况:转发路由表、数据交换、网络监控数据、网络电话应用等的交换。这些类型网络监控数据、网络电话应用等的交换。这些类型的交换不需要流控、应答、重排序或任何的交换不需要流控、应答、重排序或任何TCP提供提供的功能。的功能。4 UDP协议以数据报作为数据传输的载体。它是一个在网络上协议以数据报作为数据传输的载体。它是一个在网络上发送
3、的独立信息,它的到达、到达时间以及内容本身等都不能得发送的独立信息,它的到达、到达时间以及内容本身等都不能得到保证。到保证。UDP协议无需在发送方和接收方建立连接,协议无需在发送方和接收方建立连接,数据报在网数据报在网上可以以任何可能的路径传往目的地上可以以任何可能的路径传往目的地(分组交换分组交换)。基于基于UDP协议实现网络通信的类有三个:协议实现网络通信的类有三个:DatagramSocketDatagramPacketMulticastSocketUDP协议协议-数据报通信数据报通信邮局A包裹A包裹B包裹C邮局D邮局B邮局C5DatagramSocketpublicDatagramSo
4、cket()创建数据报套接字并将其绑定到本地主机的匿名端口。创建数据报套接字并将其绑定到本地主机的匿名端口。publicDatagramSocket(intport)创建数据报套接字并将其绑定到本地主机上的指定端口。创建数据报套接字并将其绑定到本地主机上的指定端口。publicDatagramSocket(intport,InetAddressladdr)创建数据报套接字,将其绑定到指定的创建数据报套接字,将其绑定到指定的IP地址和端口。地址和端口。publicDatagramSocket(SocketAddressbindaddr)创建数据报套接字,创建数据报套接字,SocketAddres
5、s表示了要绑定的套接字表示了要绑定的套接字地址。地址。注意:以上方法都将抛出例外注意:以上方法都将抛出例外SocketExceptionSocketException。6publicvoidreceive(DatagramPacketp)throwsIOException此方法接收数据报包。当方法返回时,此方法接收数据报包。当方法返回时,DatagramPacket的的缓冲区填充了接收的数据。此方法在接收到数据前缓冲区填充了接收的数据。此方法在接收到数据前一直阻塞一直阻塞。publicvoidsend(DatagramPacketp)throwsIOException此方法发送数据报包。此方法
6、发送数据报包。DatagramPacket包含的信息指示将包含的信息指示将要发送的要发送的数据、长度、远程主机的数据、长度、远程主机的IP地址及其端口号。地址及其端口号。抛出异常的可能性小,除非发送的数据报超过了底层网络所抛出异常的可能性小,除非发送的数据报超过了底层网络所支持的数据报的大小。支持的数据报的大小。Exceptioninthread“main”.SocketException:ThemessageislargerthanthemaximumsupportedbytheunderlyingtransportDatagramSocket接收和发送数据7 用于接收数据的数据包用于接收数
7、据的数据包 public DatagramPacket(public DatagramPacket(bytebytebuf,intbuf,intlengthlength)用来用来接收接收长度为长度为length的数据包,放入的数据包,放入buf字节数组中字节数组中 public DatagramPacket(public DatagramPacket(bytebytebuf,intbuf,intoffset,intoffset,intlengthlength)用来用来接收接收长度为长度为length的数据包,在缓冲区中指定了偏移量。的数据包,在缓冲区中指定了偏移量。(length=buf.le
8、ngth-offset)用于发送数据的用于发送数据的数据包数据包 public DatagramPacket(public DatagramPacket(bytebytebuf,intbuf,intlength,InetAddress address,intlength,InetAddress address,intportport)用来将长度为用来将长度为length的数据报的数据报发送发送到指定主机上的指定端口号。到指定主机上的指定端口号。public DatagramPacket(public DatagramPacket(bytebytebuf,intbuf,intoffset,int
9、offset,intlength,length,InetAddressInetAddressaddress,intaddress,intportport)用来将长度为用来将长度为length,偏移量为偏移量为offset的数据报的数据报发送发送到指定主机上的指定端到指定主机上的指定端口号。口号。见源文件:见源文件:udp/UDPSend.javaUDPReceive.javaDatagramPacket8intgetLocalPort()返回此套接字绑定的本地主机上的端口号。返回此套接字绑定的本地主机上的端口号。InetAddressgetLocalAddress()获取套接字绑定的本地地址。
10、获取套接字绑定的本地地址。SocketAddressgetLocalSocketAddress()返回返回SocketAddress对象,它包含对象,它包含DatagramSocket所绑定的所绑定的IP地址和端口。地址和端口。voidconnect(InetAddresshost,intport)限制当前限制当前DatagramSocket只对参数指定的远程主机和端口收只对参数指定的远程主机和端口收发数据报。发数据报。如果对其他如果对其他DatagramSocket发送数据,发送数据,send()方法抛出方法抛出IllegalArgumentException。接收到的数据报会抛。接收到的数
11、据报会抛弃,程序不会得到通知,也不会抛出异常。弃,程序不会得到通知,也不会抛出异常。DatagramSocket的主要方法9voiddisconnect()解除当前解除当前DatagramSocket与特定主机建立的与特定主机建立的“连接连接”,以后可以后可对其他任何对其他任何DatagramSocket收发数据报。收发数据报。intgetPort()返回远程的端口返回远程的端口(当且仅当当且仅当DatagramSocket建立了建立了“连接连接”,否则返回否则返回-1)。InetAddressgetInetAddress()返回远程的返回远程的IP地址地址(当且仅当当且仅当DatagramS
12、ocket建立了建立了“连接连接”,否则返回否则返回null)。SocketAddressgetRemoteSocketAddress()返回远程的返回远程的IP地址和端口地址和端口(当且仅当当且仅当DatagramSocket建立了建立了“连接连接”,否则返回否则返回null)。DatagramSocket的主要方法10DatagramPacket的主要方法的主要方法从数据报包中获取相关信息从数据报包中获取相关信息publicInetAddressgetAddress()得到发送或接收到的数据包的得到发送或接收到的数据包的IP地址。地址。publicbytegetData()得到发送或接收的
13、数据包的数据缓冲区得到发送或接收的数据包的数据缓冲区publicintgetLength()得到发送或接收到的实际数据的长度。得到发送或接收到的实际数据的长度。publicintgetOffset()得到发送或接收到的数据的偏移量。得到发送或接收到的数据的偏移量。publicintgetPort()得到发送或接收到的数据包所来自的主机的端口号。得到发送或接收到的数据包所来自的主机的端口号。11设置发送数据包中的相关信息设置发送数据包中的相关信息setAddress(InetAddressiaddr)设置要将此数据包发往的远程主机的设置要将此数据包发往的远程主机的IP地址地址setPort(in
14、tiport)设置要将此数据包发往的远程主机上的端口号设置要将此数据包发往的远程主机上的端口号setData(bytebuf)为此包设置数据缓冲区。为此包设置数据缓冲区。setData(bytebuf,intoffset,intlength)为此包设置数据缓冲区,包括偏移量和长度。为此包设置数据缓冲区,包括偏移量和长度。setLength(intlength)为此包设置长度。为此包设置长度。见源文件:见源文件:udp/UDPTest.javaDatagramPacket的主要方法的主要方法12建立建立DatagramSocket创建接收数据的创建接收数据的DatagramPacket等待接收报
15、文等待接收报文建立建立DatagramSocket建立发送数据的建立发送数据的DatagramPacket发出报文发出报文获得对方地址获得对方地址创建接收包创建接收包等待接收等待接收发送端发送端接收端接收端UDP协议通信的基本过程构成信息包构成信息包发送出去发送出去13数据格式的转换UDP数据报中只能存放字节类型的数据,如果需要传递其他类型数据报中只能存放字节类型的数据,如果需要传递其他类型的数据,需要将其他类型的数据与字节类型的数据进行转换。的数据,需要将其他类型的数据与字节类型的数据进行转换。发送方:发送方:ByteArrayOutputStream和和DataOutputStream基本
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 UDP 协议 Socket 通信
限制150内