Java编程思想之网络编程(一)机器的标识

来源:互联网 发布:战地4优化补丁 编辑:程序博客网 时间:2024/06/15 22:18

1. 机器的标识

为了分辨来自别处的一台机器,以及为了保证自己连接的是希望的那台机器,必须有一种机制能独一无二地标识出网络内的每台机器。这种机制我们叫做IP:
(1) 大家最熟悉的DNS(域名服务)形式。比如 bruceeckel.com。
(2) 此外,亦可采用“四点”格式,亦即由点号(.)分隔的四组数字,比如202.98.32.111。

1.1 服务器与客户机

(1) 网络最基本的精神就是让两台机器连接到一起,并相互“交谈”或者“沟通”。
(2) 服务器的主要任务是侦听建立连接的请求,这是由我们创建的特定服务器对象完成的。
(3) 客户机的任务是试着与一台服务器建立连接,这是由我们创建的特定客户机对象完成的。
(4) 一旦连接建好,那么无论在服务器端还是客户机端,连接只是魔术般地变成了一个IO 数据流对象。
(5) 建立了一个特殊的地址——localhost——来满足非网络环境中的测试要求。Java 中产生这个地址最一般的做法:
用InetAddress 对特定的机器进行索引,而且必须在进行进一步的操作之前得到这个InetAddress(互联网地址)。我们不可以操纵一个InetAddress 的内容,但可以打印。
创建InetAddress 的唯一途径就是那个类的static(静态)成员方法getByName()(这是最常用的)、getAllByName()或getLocalHost()。
为得到本地主机地址,向getByName()传递一个null(空)值,就默认为使用localhost:
InetAddress addr = InetAddress.getByName(null);
亦可向其直接传递字串"localhost" :InetAddress.getByName("localhost");
或者使用它的保留IP 地址(四点形式): InetAddress.getByName("127.0.0.1");
package com.dason.getip;import java.net.InetAddress;public class GetIp {public static void main(String[] args) throws Exception {InetAddress a = InetAddress.getByName(null);System.out.println(a); // localhost/127.0.0.1a = InetAddress.getByName("localhost");System.out.println(a); // localhost/127.0.0.1a = InetAddress.getByName("127.0.0.1");System.out.println(a); // /127.0.0.1}}

1.2 端口

(1) 有些时候,一个IP 地址并不足以完整标识一个服务器。这是由于在一台物理性的机器中,往往运行着多个服务器(程序)。由IP 表达的每台机器也包含了“端口”(Port )。就象我们去拜会某人时,IP 地址是他居住的房子,而端口是他在的那个房间。
(2) 每个服务都同一台特定服务器机器上的一个独一无二的端口编号关联在一起。客户程序必须事先知道自己要求的那项服务的运行端口号。
(3) 系统服务保留了使用端口1 到端口1024 的权力,所以不应让自己设计的服务占用这些以及其他任何已知正在使用的端口。


原创粉丝点击