在 Java 中,基于 TCP 协议实现网络通信的类有两个,在客户端的 Socket 类和在服务器端的ServerSocket 类,ServerSocket 类的功能是建立一个 Server,并通过 accept()方法随时监听客户端的连接请求。
  扩展:
  ServerSocket 中常用的构造函数及方法
    构造函数:ServerSocket(int port) 这是一个构造方法,用于在当前的服务器默认的IP地址上监听一个指定的端口,即在指定的 IP 和端口创建一个   ServerSocket 对象方法:
  Socket accept() 产生阻塞,监听指定的端口,直至有客户端发来连接请求
  void close() 关闭当前 ServerSocket
  InetAddress getInetAddress() 返回 ServerSocket 监听的,本机的 IP 地址
  int getLocalPort() 返回 ServerSocket 监听的,本机的 IP 地址上指定的端口号
  int getSoTimeout();void setSoTimeout(int timeout) 设置连接过程中没有得到相应的等待期间(TimeOut)
  String toString() 以字符串的方式返回 ServerSocket 监听的,本机的 IP 地址及其端口号
  
  Socket 类中常用的构造函数和方法
  构造函数:Socket(InetAddress address,int port) 用于创建一个链接,向指定的 IP 地址上指定的端口的服务器端程序发送连接请求
  Socket(String host,int port) 同上,但该方法允许通过主机名字符串向服务器发送连接请求
  方法:
  void close()关闭当前的 Socket 连接
  InetAddress getInetAddress() 返回 Socket 建立了连接的服务器的 IP 地址
  InputStream getInputStream() 返回当前 Socket 的输入流
  OutputStream getOutStream() 返回当前 Socket 的输出流
  InetAddress getLocalAddress() 返回和 Socket 进行连接的本地的 IP 地址
  int getLocalPort() 返回和 Socket 进行连接的本地的端口号
  int getPort() 返回和 Socket 建立了连接的服务器的端口号
  int getSoTimeOut();void setSoTimeOut(int timeout) 设置连接过程中没有得到相应的等待期间
  String toString () 以字符串的方式返回 Socket 的属性信息
 
  Socket 类的构造方法包括以下几种:
  public Socket(String host,int port)
  public Socket(InetAddress address,int port)
  public Socket(String host,int port,InetAddress localAddr,int localPort)
  public Socket(InetAddress host,int port, InetAddress,localAddr,int localPort)
  在 JDK1.1 以前,Socket 类可同时用于 TCP/UDP 通信:
  public Socket(String host,int port,Boolean stream)
  public Socket(InetAddress host,int port, Boolean stream)
  Socket 类的输入/输出流管理包括以下方法:
  public InputStream getInputStream()
  public void shutdowmInput()
  public OutputStream get OutputStream ()
  public void shutdowmOutput()
  以上这些方法都将抛出 IOException 异常,程序中需要捕获并处理。
  关闭 Socket 的方法为:
  public void close() throws IOException
  设置/获取 Socket 数据的方法为:
  public InetAddress getInetAddress()
  public int getPort()
  public void setSoTimeout(int timeout)
  这些方法都将抛出 SocketException 异常,程序中需要捕获并处理。
  ServerSocket 类的构造方法包括以下几种:
  public ServerSocket (int Port)
  public ServerSocket (int Port,int backlog):支持指定数目的连接
  public ServerSocket (int Port,int backlog,InetAddress bindAddr)
  这些方法都将抛出 IOException 异常,程序中需要捕获并处理。
  public Socket accept():等待客户端的连接
  public void close():关闭 Socket
  设置/获取 Socket 数据的方法包括:
  public InetAddress get InetAddress ()
  public int getLocalPort()
  public void setSoTimeout(int timeout)
  这些方法都将抛出 SocketException 异常,程序中需要捕获并处理。

  Socket 的基本概念
  1.建立连接
  当需要建立网络连接时,必须有一台机器运行一个程序,随时等候连接,而另一端的程序这对其发出连接请求。这一点同电话系统类似——必须有一方拨打电话,而另一方必须等候电话连通。建立连接的过程为:
  (1)现在服务器端生成一个 ServerSocket 实例对象,随时监听客户端的连接请求。
  (2)当客户端需要连接时,相应地要生成一个 Socket 实例对象,并发出连接请求,其中 host参数指明该主机名,port#参数指明该主机端口号。
  (3)服务器端通过 accept()方法接收到客户端的请求后,开辟一个接口与之进行连接,并生成所需的 I/O 数据流。
  (4)客户端和服务器端的通信都是通过一对 InputStream 和 OutputStream 进行的,通信结束后,两端分别关闭对应的 Socket 接口。