科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件通过远程连接的Java I/O

通过远程连接的Java I/O

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文我们探讨Java平台提供的另一I/O功能,也就是把读写本机文件系统的技术、类和数据类型应用于远程数据连接的数据读写。

作者:BUILDER.COM 来源:至顶网软件频道 2002年5月13日

关键字: java IO

  • 评论
  • 分享微博
  • 分享邮件
通过Java I/O流读写数据”一文讨论了Java平台提供的输入/输出(I/O)类、接口以及相应的操作。接下来,我们继续探讨Java平台提供的另一I/O功能,也就是把读写本机文件系统的技术、类和数据类型应用于远程数据连接的数据读写。
网络互联概述

联网的计算机通常会带一个物理连接,所有传递给这台计算机的数据都必须“钻”进这个数据传输的“通道”里来。问题是,传输的数据类型多样,在传输的时候还采用了许多不同的通信协议,这一切却都得用到同一物理连接,而且还往往是同时用到。那么这些可怜的数字设备是如何应付这一困境的呢?答案是采用端口。“狡猾”的计算机会向外部世界暴露出一扇扇写着端口字眼的“门面”,给人的印象就好象它拥有无限的物理连接数量。

所谓端口(port),简单地讲就是计算机系统把数据路由到适当的应用程序的一个数字编号。有些端口号被称作周知口(well-known port),例如HTTP、FTP以及SMTP等特殊服务都分别保留了对应的周知口。周知口的编号范围是从0到1023。端口号,连同标识目标计算机的信息会伴随数据穿越网络连接。这种情况使得应用程序之间的通讯具有了很多不测的可能和变数,比方说,黑客的鼻子就特别爱往端口上凑,不过,这已经不是我们在这里要讨论的话题了。

广义地说,Java网络应用程序采用了两种通讯类型,这就是TCP(基于连接)和UDP(无连接)。在基于连接的通讯方式下,应用程序会把一种称为套接字(socket)的端点关联/绑定到特定的端口。这样就能有效地指引系统把某一应用程序涉及的所有数据路由到某个指定的端口。而对无连接通讯来说,包含端口号的单个包会被广播到指定的目标。

刚才我絮絮叨叨地扯了半天的技术讲座,可能会令读者产生对网络通信技术的抵触情绪。幸好,Java提供了一种java.net包。这个包里的类和接口为那些采用网络通讯的应用程序提供了一种网络通信的抽象技术集合。

java.net包

Java平台上的java.net包提供了一个Socket类,表示Java程序同另外一程序之间的多连接会话中的一个连接。Socket类隐藏了Java通信程序所需要但却烦琐的底层通信功能细节。java.net.Socket类可以令Java程序以一种和平台无关的方式实现网络通信。另外,java.net 包内还提供了ServerSocket类,这个类代表了面向服务器的应用程序用来接受发自客户应用程序连接的连接。

java.net包为那些采用TCP或UDP的程序提供了相应的类和接口。TCP通信程序可能用到URL、URLConnection、Socket和ServerSocket类。而UDP通信程序则会用到DatagramPacket、DatagramSocket以及MulticastSocket类。

读写套接字

使用java.net包socket类的Java程序必须对它们想要用来通信的连接进行初始化。然后,对该连接进行数据读写。为了通过套接字连接读写数据,我们首先从套接字那里获得一个输出或者输入流,然后用一种同本机文件系统文件读写技术相似的技术读写这些数据流。


TCP客户机和服务器

现在我们分析一个数据流连接交互的具体示例。代码请见 代码清单A。该程序实现了一个客户机类:TCPClient,由它负责连接服务器类:TCPServer。服务器接收来自客户机的数据,并把这些数据写到System.out,然后向客户机发送确认消息。

服务器在端口7776上打开一个套接字,然后等待客户联接。一旦某一客户机成功联接到服务器,服务器就会在客户套接字上打开输入流和输出流以读写数据。请注意,我们采用流和读写器的方式和我们写本机文件系统时的方式是一样的。

客户机(参见代码清单B)会尝试在端口7776上创建一个套接字连接服务器。如果连接尝试成功,那么客户机就会读取用户输入的数据随后用套接字所提供的输出流把这些数据写到服务器。客户程序还将读取从服务器传回的数据并把它显示给System.out

小结

Java平台提供的网络通信类可以让我们实现通过网络/远程连接通信的应用程序。使用Java 的套接字类就可以让我们在两个乃至更多的客户机或服务器上实现网络通信。

在下一个文章里,我们将把对Java联网框架的讨论扩展到因特网和URL领域。我们还将了解到采用同样的数据传输机制是如何读写URL连接数据的。

责任编辑:炒饭

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章