<b>在Java中操作UDP</b>[Java编程]
本文“<b>在Java中操作UDP</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
什么是UDP协议
UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包.在OSI模子中,在第四层——传输层,处于IP协议的上一层.UDP有不供应数据报分组、组装和不能对数据包的排序的缺陷,也就是说,当报文发送之后,是无法得知其能否安全完好到达的.
为什么要利用UDP
在挑选利用协议的时刻,挑选UDP必必要谨严.在网络质量令人不非常称心的环境下,UDP协议数据包丧失会对比严重.但是由于UDP的特点:它不属于衔接型协议,因而具有资源损耗小,处理速度快的长处,所以普通音频、视频和普通数据在传送时利用UDP较多,因为它们即便无意丧失一两个数据包,也不会对接纳后果产生太大影响.比方我们聊天用的ICQ和OICQ就是利用的UDP协议.
在Java中操作UDP
利用位于JDK中Java.net包下的DatagramSocket和DatagramPacket类,可以非常便利地掌握用户数据报文.
在描写它们之前,必须理解位于同一个位置的InetAddress类.InetAddress实现了Java.io. Serializable接口,不答应担当.它用于描写和包装一个Internet IP地址,通过三个办法返回InetAddress实例:
getLocalhost():返回封装本地地址的实例.
getAllByName(String host):返回封装Host地址的InetAddress实例数组.
getByName(String host):返回一个封装Host地址的实例.此中,Host可以是域名大概是一个合理的IP地址.
DatagramSocket类用于成立接纳和发送UDP的Socket实例.和Socket类依靠SocketImpl类一样,DatagramSocket类的实现也依靠专门为它计划的DatagramScoketImplFactory类.DatagramSocket类有3个构建器:
DatagramSocket():成立实例.这是个对比特别的用法,普通用于客户端编程,它并没有特定监听的端口,仅仅利用一个暂时的.
DatagramSocket(int port):成立实例,并固定监听Port端口的报文.
DatagramSocket(int port, InetAddress localAddr):这是个非常有效的构建器,当一台机械拥有多于一个IP地址的时刻,由它成立的实例仅仅接纳来自LocalAddr的报文.
值得注意的是,在成立DatagramSocket类实例时,假如端口已经被利用,会产生一个SocketException的非常抛出,并招致程序不法终止,这个非常应当注意捕捉.DatagramSocket类最主要的办法有4个:
Receive(DatagramPacket d):接纳数据报文到d中.receive办法产生一个“阻塞”.
Send(DatagramPacket d):发送报文d到目的地.
SetSoTimeout(int timeout):设置超不时间,单位为毫秒.
Close():关闭DatagramSocket.在利用程序退出的时刻,普通会主动释放资源,关闭Socket,但是由于非常地退出大概造成资源无法回收.所以,应当在程序完成时,主动利用此办法关闭Socket,或在捕捉到非常抛出后关闭Socket.
“阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发.
DatagramPacket类用于处理报文,它将Byte数组、目标地址、目标端口等数据包装成报文大概将报文拆卸成Byte数组.利用程序在产生数据包是应当注意,TCP/IP规定数据报文大小最多包含65507个,普通主机接纳548个字节,但大大都平台可以支持8192字节大小的报文.DatagramPacket类的构建器共有4个:
DatagramPacket(byte[] buf, int length, InetAddress addr, int port):从Buf数组中,取出Length长的数据成立数据包对象,目标是Addr地址,Port端口.
DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port):从Buf数组中,取出Offset开始的、Length长的数据成立数据包对象,目标是Addr地址,Port端口.
DatagramPacket(byte[] buf, int offset, int length):将数据包中从Offset开始、Length长的数据装进Buf数组.
DatagramPacket(byte[] buf, int length):将数据包中Length长的数据装进Buf数组.
DatagramPacket类最重要的办法就是getData()了,它从实例中获得报文的Byte数组编码.
以上是“<b>在Java中操作UDP</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |