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

Java编程那些事儿105——网络编程技术4[Java编程]

赞助商链接



  本文“Java编程那些事儿105——网络编程技术4[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

13.2.4 UDP编程

网络通讯的方法除了TCP方法以外,还有一种实现的方法就是UDP方法.UDP(User Datagram Protocol),中文意思是用户数据报协议,方法近似于发短信息,是一种物美价廉的通讯方法,利用该种方法无需成立专用的虚拟衔接,由于无需成立专用的衔接,所以关于服务器的压力要比TCP小很多,所以也是一种常见的网络编程方法.但是利用该种方法最大的不足是传输不坚固,当然也不是说常常丧失,就像大家发短信息一样,理论上存在收不到的大概,这种大概性大概是1%,反正对比小,但是由于这种大概的存在,所以平常我们都认为重要的事情还是打个电话吧(近似TCP方法),普通的事情才发短信息(近似UDP方法).网络编程中也是这样,必必要求坚固传输的信息普通利用TCP方法实现,普通的数据才利用UDP方法实现.

UDP方法的网络编程也在Java语言中得到了杰出的支持,由于其在传输数据的历程中不需求成立专用的衔接等特点,所以在Java API中计划的实现构造和TCP方法不太一样.当然,需求利用的类还是包含在java.net包中.

在Java API中,实现UDP方法的编程,包含客户端网络编程和服务器端网络编程,主要由两个类实现,辨别是:

l  DatagramSocket

DatagramSocket类实现“网络衔接”,包含客户端网络衔接和服务器端网络衔接.固然UDP方法的网络通讯不需求成立专用的网络衔接,但是毕竟还是需求发送和接纳数据,DatagramSocket实现的就是发送数据时的发射器,以及接纳数据时的监听器的角色.类比于TCP中的网络衔接,该类既可以用于实现客户端衔接,也可以用于实现服务器端衔接.

l  DatagramPacket

DatagramPacket类实现关于网络中传输的数据封装,也就是说,该类的对象代表网络中交换的数据.在UDP方法的网络编程中,无论是需求发送的数据还是需求接纳的数据,都必须被处理成DatagramPacket范例的对象,该对象中包含发送到的地址、发送到的端口号以及发送的内容等.其实DatagramPacket类的作用近似于实际中的信件,在信件中包含信件发送到的地址以及接纳人,还有发送的内容等,邮局只需求按照地址传送便可.在接纳数据时,接纳到的数据也必须被处理成DatagramPacket范例的对象,在该对象中包含发送方的地址、端口号等信息,也包含数据的内容.和TCP方法的网络传输相比,IO编程在UDP方法的网络编程中变得不是必须的内容,构造也要比TCP方法的网络编程简单一些.

下面介绍一下UDP方法的网络编程中,客户端和服务器端的实现步骤,以及通过底子的示例演示UDP方法的网络编程在Java语言中的实现方法.

UDP方法的网络编程,编程的步骤和TCP方法近似,只是利用的类和办法存在对比大的辨别,下面首先介绍一下UDP方法的网络编程客户端实现历程.

UDP客户端编程触及的步骤也是4个部份:成立衔接、发送数据、接纳数据和关闭衔接.

首先介绍UDP方法的网络编程中成立衔接的实现.此中UDP方法的成立衔接和TCP方法差别,只需求成立一个衔接对象便可,不需求指定服务器的IP和端口号码.实现的代码为:

DatagramSocket ds = new DatagramSocket();

这样就成立了一个客户端衔接,该客户端衔接利用系统随机分配的一个本地计算机的未用端口号.在该衔接中,不指定服务器端的IP和端口,所以UDP方法的网络衔接更像一个发射器,而不是一个具体的衔接.

当然,可以通过拟定衔接利用的端口号来成立客户端衔接.

DatagramSocket ds = new DatagramSocket(5000);

这样就是利用本地计算机的5000号端口成立了一个衔接.普通在成立客户端衔接时没有必要指定端口号码.

接着,介绍一下UDP客户端编程中发送数据的实现.在UDP方法的网络编程中,IO技术不是必须的,在发送数据时,需求将需求发送的数据内容首先转换为byte数组,然后将数据内容、服务器IP和服务器端口号一同构造成一个DatagramPacket范例的对象,这样数据的预备就完成了,发送时调用网络衔接对象中的send办法发送该对象便可.比方将字符串“Hello”发送到IP是127.0.0.1,端口号是10001的服务器,则实现发送数据的代码以下:

String s = “Hello”;
String host = “127.0.0.1”;
int port = 10001;
//将发送的内容转换为byte数组
byte[] b = s.getBytes();
//将服务器IP转换为InetAddress对象
InetAddress server = InetAddress.getByName(host);
//构造发送的数据包对象
DatagramPacket sendDp = new DatagramPacket(b,b.length,server,port);
//发送数据
ds.send(sendDp);

在该示例代码中,不管发送的数据内容是什么,都需求转换为byte数组,然后将服务器端的IP地址构造成InetAddress范例的对象,在预备完成今后,将这些信息构造成一个DatagramPacket范例的对象,在UDP编程中,发送的数据内容、服务器端的IP和端口号,都包含在DatagramPacket对象中.在预备完成今后,调用衔接对象ds的send办法把DatagramPacket对象发送出去便可.


  以上是“Java编程那些事儿105——网络编程技术4[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • 利用Javascript实现网页水印(非图片水印)
  • Java开辟环境的搭建
  • Ubuntu java安装与配置
  • 办理Ubuntu 10.04 Firefox3.6 Java浏览器插件不工作的问
  • Ubuntu重装后Java环境的设置
  • Sun Java进入Ubuntu 10.10软件中央
  • Ubuntu 10.10配置Java开辟环境
  • 在Ubuntu 10.10中配置Java环境变量的办法
  • Ubuntu下Java环境的搭建
  • Ubuntu 10.04 下安装 Java, JRE
  • Ubuntu 10.04下的搭建SUN JAVA开辟环境
  • Ubuntu 12.04安装java7
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

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

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