第
15
章 网络编程
历史上的网络编程都倾向于困难、复杂,而且极易出错。
程序员必须掌握与网络有关的大量细节,有时甚至要对硬件有深刻的认识。
一般地,我们需要理解连网协议中不同的“层”(
Layer
)。而且对于每个连网库,
一般都包含了数量众多的函数,分别涉及信息块的连接、打包和拆包;这些块的
来回运输;以及握手等等。这是一项令人痛苦的工作。
但是,连网本身的概念并不是很难。我们想获得位于其他地方某台机器上的
信息,并把它们移到这儿;或者相反。这与读写文件非常相似,只是文件存在于
远程机器上,而且远程机器有权决定如何处理我们请求或者发送的数据。
Java
最出色的一个地方就是它的“无痛苦连网”概念。有关连网的基层细节
已被尽可能地提取出去,并隐藏在
JVM
以及
Java
的本机安装系统里进行控制。
我们使用的编程模型是一个文件的模型;事实上,网络连接(一个“套接字”)
已被封装到系统对象里,所以可象对其他数据流那样采用同样的方法调用。除此
以外,在我们处理另一个连网问题——同时控制多个网络连接——的时候,
Java
内建的多线程机制也是十分方便的。
本章将用一系列易懂的例子解释
Java
的连网支持。
15.1
机器的标识
当然,为了分辨来自别处的一台机器,以及为了保证自己连接的是希望的那
台机器,必须有一种机制能独一无二地标识出网络内的每台机器。早期网络只解
决了如何在本地网络环境中为机器提供唯一的名字。但
Java
面向的是整个因特
网,这要求用一种机制对来自世界各地的机器进行标识。为达到这个目的,我们
采用了
IP
(互联网地址)的概念。
IP
以两种形式存在着:
评论