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

Java网络编程之传输掌握协议[Java编程]

赞助商链接



  本文“Java网络编程之传输掌握协议[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

传输掌握协议是一种基于流的网络通讯办法,它与别的的任何协议都有很大 的差别.本文谈论TCP流以及在Java中怎样操作它.

1、概述

TCP供应的网络通讯接口与用户数据报协议(UDP)截然差别.TCP的特点使网 络编程很具魅力,并且它删除了UDP的很多干扰部份(比方数据包的排序和丧失 ),简化了网络通讯.UDP关心的是数据包的传输,而TCP关注的是成立网络衔接 ,并在网络衔接中发送和接纳字节俭.

数据包可以通过网络用多种办法发送,并且它们到达的时间大概差别.这有 利于性能的提高和程序的结实性,因为单个包的丧失不一定干扰别的包的传输. 但是,这样的系统使程序员必须作更多的工作,他们必须保证数据的送达 (delivery).TCP通过对发送和次序的保证消除了这些额外的工作,为客户端 和支持两路(two-way)通讯的服务器之间供应了坚固的字节通讯流.它在两台 计算机之间成立了"虚拟衔接",可以通过虚拟衔接发送数据流.

图1:TCP成立虚拟衔接传输数据

TCP利用更低层的(lower-level)的IP通讯协议在两台计算机之间成立衔接 .这种衔接供应了一个答应字节俭发送和接纳的接口,并且采取透明的方法把数 据转换为IP数据报.数据报(datagram)的问题之一是不能保证数据包到达目的 地.TCP办理了这个问题,它供应了有保证的数据字节的送达.当然,网络错误 影响了送达也是大概的,但是TCP通过近似重新发送数据包办理了这种实现的问 题,并且只在情形很严重(比方没有到网络主机的路由或衔接丧失了)的时刻才 提醒程序员.

两台计算机之间的虚拟衔接表现为套接字(socket).套接字答应数据的发 送和接纳,但是UDP套接字和TCP套接字之间有本质的辨别.首先TCP套接字衔接 到单个计算机,但是UDP套接字可以向多台计算机传输或接纳数据;其次,UDP套 接字只能发送和接纳数据包,但是TCP答应通过字节俭的数据传输(表现为输入 流(InputStream)和输出流(OutputStream)).为了在网络上传输,它们被 转换为数据包,不需求程序员干与(如图2所示).

图2:TCP把数据流处理为协议的号令,但是 为在网络上传输把流转换为IP数据报

1、UDP(用户数据报协议)上的TCP 的长处

⑴自动化地错误掌握

TCP流上的数据传输比通过UDP的信息 包的传输更坚固.在TCP下层,通过虚拟衔接发送的数据包含一个查抄机制以确 保它们没有被破坏(与UDP近似).但是,TCP保证了数据的送达--在传输历程中 丧失的数据包将被重新传输.

你大概想知道这是若何实现的--实际上, IP和UDP不保证送达,当数据包丧失的时刻它们也不会发出任何告诫.在TCP利用 数据包发送了某个数据调集的时刻就会启动一个计时器.在UDP中,我们利用 DatagramSocket.setSoTimeout为receive()操作启动一个计时器.在TCP中,如 果接纳者发送一个必定的应答就禁止计时器,但是假如在超时前还没有收到必定 的应答,数据包就被重新传输.这意味着写入某个TCP套接字的任何数据将到达 另一方而不需求程序员的进一步干与(除非发生大的事故造成整个网络瘫痪). 错误掌握的代码都由TCP处理了.

⑵坚固性

因为在TCP衔接中有多 方参与的两台计算机之间发送的数据通过IP数据报传输,数据包到达的次序大概 常常呈现差别.这大概需求利用一个循环从TCP套接字读失信息,因为字节俭的 次序大概被打乱并且频繁碰到不坚固的问题.幸运的是,次序等问题已经被TCP 处理好了--每一个数据包都包含一个用于排序的序列号.后发送、先到达的数据 包将保持在一个行列中,直到排好次序的数据可以利用为止.接着数据便可以通 过套接字的接口传送到利用程序中.

⑶易于利用

固然把信息存储 为数据包的确没有超越程序员的范围,但这不会是计算机之间通讯的最高效率的 途径.还应当有别的一些的复杂性,你可以谈论在某个底线之上计划和成立软件 ,为程序员供应充足的复杂性.典型情形下开辟者欢送软件开辟复杂性的降低, TCP就实现了这种功效.TCP答应程序员用一种完好差别的方法考虑问题,而这种 方法越发现代化.数据不是被处理为不持续的单元(数据报包),而是被处理为 持续的流,就像目前读者所熟习的I/O流.TCP套接字持续了传统的Unix编程,在 Unix编程中通讯与文件输入和输出是一样处理的.无论开辟者写入网络套接字、 通讯管道、数据构造、用户掌握台或文件的时刻,这种机制都时相同的.当然它 也一样利用与读失信息.这使得通过TCP套接字举行通讯比通过数据报包通讯更 加简单.

2、利用端口在利用程序之间通讯

很明显,TCP与UDP之间差别宏大,但是在两种协议之间也有一项重要的类似 性.两种都同享了通讯端口的概念,它可以辨别各个利用程序.在相同的端口上 可以运行多个服务和客户端,并且但愿不给它们分配端口号而挑选出某个利用程 序是不大概的.当TCP套接字成立到某台计算机的衔接的时刻,它需求两部份非 常重要的信息才能衔接到远程客户端--该计算机的IP地址和端口号.此外,本地 的IP地址和端口号也将绑定到它上面,因此远程计算机可以辨认是哪一个利用程 序成立了衔接(图3所示).总之,你不会但愿你自己的电子邮件被在相同系统 上运行软件的别的用户拜候.

图3:本地端口辨认了别的程序成立的到某个利用程序的衔接


  以上是“Java网络编程之传输掌握协议[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 .