会把它用光。但根据目前正在研究的新 IP 编址方案(IPV6),它将采用 128 bit
的数字,这样得到的唯一性 IP 地址在几百年的时间里都不会用完。
作为运用 InetAddress.getByName()一个简单的例子,请考虑假设自己有
一家拨号连接因特网服务提供者(ISP),那么会发生什么情况。每次拨号连接
的时候,都会分配得到一个临时 IP 地址。但在连接期间,那个 IP 地址拥有与因
特网上其他 IP 地址一样的有效性。如果用户按照特定的 IP 地址连接一台主机,
他们就可以使用目标主机上运行的 Web 或者 FTP 服务器程序。当然这有个前
提,用户必须准确地知道该主机目前分配到的 IP。由于每次拨号连接获得的 IP
都是随机的,怎样才能准确地掌握你的 IP 呢?
下面这个程序利用 InetAddress.getByName()来产生一个 IP 地址。为了
让它运行起来,事先必须知道计算机的名字。
// 连接网络时查看 IP 地址
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]);
System.out.println(a);
}
}
如果执行:
java whoAmI yourpcname
得到的结果像下面这个样子
yourpcname /192.168.0.1
2.2 服务器和客户机
网络最基本的目的就是让两台机器连接到一起,并相互“交谈”或者“沟通”。一
旦两台机器都发现了对方,就可以展开一次令人愉快的双向对话。但它们怎样
才能“发现”对方呢?这就象在游乐园里那样:一台机器不得不停留在一个地方,
侦听其他机器说:“嘿,你在哪里呢?”
“停留在一个地方”的机器叫作“服务器”(Server);到处“找人”的机器则叫