当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

<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编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .