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

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜