2.连接地址
  打电话时,呼叫方必须事先知道所需拨打的号码,而程序建立网络连接时,也同样需要知道地址或主机名称。另外,网络连接还需要一个端口号(可以将其当作电话的分机号),连接到正确的主机之后,需要对该连接确认特定口令。某些情况下,还需要使用一个扩展号码与网络计费系统相连,于是相应地要有一个特定端口号用于连接计费程序。
  3.端口号
  在 TCP/IP 系统中,端口号由 16 位二进制整数组成,即在 0-65535 之间。实际应用中,前1024 个端口号已经预先定义为一些特定服务,因此一般不能使用,除非想同这些服务器进行连接(如 Telnet,SMTP,mail,ftp 等)。在两个程序连接之前,彼此之间必须达成一致,即由客户端负责初始化连接,而服务器随时等候请求。只有客户端和服务器端指定端口号一致时连接才会建立。如果系统中两个程序所用端口号不一致,这连接无法建立。
  4.网络连接模式
在 Java 中,TCP/IP 接口的连接是由 java.net 包中的类实现的。如图表示的是 Socket 连接过程中客户端和服务器端的工作原理。

  每个 server 端都拥有一个端口号,一台机器上如果运行多个服务,这可能对应多个端口号。通信结束后,两端分别关闭对应的 Socket 接口,而不影响其他的端口。

  Socket 通信的基本步骤 
  使用 Socket 方式进行网络通信的程序基本结构都是类似的,无论一个 Socket 通信程序的功能多么齐全、程序多么复杂,其基本结构都是一样的。客户端与服务器端进行通信的过程都包括以下四个基本步骤:
  (1)在服务器端指定一个用来等待连接的端口号,在客户端规定一个主机和端口号,从而在客户端和服务器端创建 Socket/ServerSocket 实例。
  (2)打开连接到 Socket 的输入输出流。
  (3)利用输入输出流,按照一定的协议对 Socket 进行读写操作。
  (4)关闭输入输出流和 Socket
   通常,程序员的主要工作时针对所要完成的功能砸器第(3)步进行编程,第(1)、(2)、(4)步对所有的通信程序来说几乎都是一样的。

  Socker 通信的程序设计
  1.服务器端程序
  TCP/IP 服务器端应用程序是通过 Java 语言中提供的 ServerSocket 和 Socket 这两个有关网络的类来实现的。而 ServerSocket 类除了建立一个 Server 之外,还通过 accept()方法提供了随
时监听客户端连接请求的功能,它的构造方法有以下两种。
  ServerSocket(int port)
  ServerSocket(int port,int backlog)
  其中 port 是指连接中对方的端口号,backlog 则表示服务器端所能支持的大连接数。下面的程序用来监听客户端应用程序建立连接的请求,并在连接建立后向客户端发送信息。