1 / 100
文档名称:

网络编程.doc

格式:doc   大小:341KB   页数:100页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

网络编程.doc

上传人:phljianjian 2017/3/2 文件大小:341 KB

下载得到文件列表

网络编程.doc

相关文档

文档介绍

文档介绍:第 15章网络编程历史上的网络编程都倾向于困难、复杂,而且极易出错。程序员必须掌握与网络有关的大量细节,有时甚至要对硬件有深刻的认识。一般地, 我们需要理解连网协议中不同的“层”( Layer )。而且对于每个连网库, 一般都包含了数量众多的函数,分别涉及信息块的连接、打包和拆包;这些块的来回运输;以及握手等等。这是一项令人痛苦的工作。但是,连网本身的概念并不是很难。我们想获得位于其他地方某台机器上的信息,并把它们移到这儿;或者相反。这与读写文件非常相似,只是文件存在于远程机器上,而且远程机器有权决定如何处理我们请求或者发送的数据。 Java 最出色的一个地方就是它的“无痛苦连网”概念。有关连网的基层细节已被尽可能地提取出去, 并隐藏在 JVM 以及 Java 的本机安装系统里进行控制。我们使用的编程模型是一个文件的模型;事实上,网络连接(一个“套接字”) 已被封装到系统对象里,所以可象对其他数据流那样采用同样的方法调用。除此以外,在我们处理另一个连网问题——同时控制多个网络连接——的时候, Jav a 内建的多线程机制也是十分方便的。本章将用一系列易懂的例子解释 Java 的连网支持。 机器的标识当然,为了分辨来自别处的一台机器,以及为了保证自己连接的是希望的那台机器,必须有一种机制能独一无二地标识出网络内的每台机器。早期网络只解决了如何在本地网络环境中为机器提供唯一的名字。但 Java 面向的是整个因特网, 这要求用一种机制对来自世界各地的机器进行标识。为达到这个目的,我们采用了 IP(互联网地址)的概念。 IP以两种形式存在着: (1) 大家最熟悉的 DNS ( 域名服务)形式。我自己的域名是 。所以假定我在自己的域内有一台名为 Opus 的计算机,它的域名就可以是 Opus. 。这正是大家向其他人发送电子函件时采用的名字,而且通常集成到一个万维网( WWW )地址里。(2) 此外,亦可采用“四点”格式,亦即由点号( .)分隔的四组数字,比如 。不管哪种情况, IP 地址在内部都表达成一个由 32 个二进制位( bit )构成的数字(注释①) ,所以 IP 地址的每一组数字都不能超过 255 。利用由 提供的 static () , 我们可以让一个特定的 Java 对象表达上述任何一种形式的数字。结果是类型为 InetAddress 的一个对象,可用它构成一个“套接字”( Socket ),大家在后面会见到这一点。①:这意味着最多只能得到 40 亿左右的数字组合,全世界的人很快就会把它用光。但根据目前正在研究的新 IP编址方案,它将采用 128 bit的数字,这样得到的唯一性 IP地址也许在几百年的时间里都不会用完。作为运用 () 一个简单的例子,请考虑假设自己有一家拨号连接因特网服务提供者( ISP ),那么会发生什么情况。每次拨号连接的时候, 都会分配得到一个临时 IP地址。但在连接期间,那个 IP地址拥有与因特网上其他 IP地址一样的有效性。如果有人按照你的 IP地址连接你的机器,他们就有可能使用在你机器上运行的 Web 或者 FTP 服务器程序。当然这有个前提,对方必须准确地知道你目前分配到的 IP 。由于每次拨号连接获得的 IP 都是随机的,怎样才能准确地掌握你的 IP呢? 下面这个程序利用 () 来产生你的 IP地址。为了让它运行起来,事先必须知道计算机的名字。该程序只在 Windows 95 中进行了测试, 但大家可以依次进入自己的“开始”、“设置”、“控制面板”、“网络”,然后进入“标识”卡片。其中,“计算机名称”就是应在命令行输入的内容。 827 页程序//: c15: // Finds out work address when // you're connected to the . import .*; public class WhoAmI { public static void main(String[] args) throws Exception { if( !=1){ ( "Usage: WhoAmI MachineName"); (1); } InetAddress a= (args[0]); (a); }} ///:~ 就我自己的情况来说,机器的名字叫作“ Colossus ”(来自同名电影,“巨人”的意思。我在这台机器上有一个很大的硬盘) 。