网络编程的基本模型是客户机/服务器模型,即通常所说的C/S 结构。Java SDK 提供一些API 类来完成客户机Socket 和服务器Socket 的构建与通信,这些类存在于Java.net 包中。常用的类有Socket 和ServerSocket 类。
(1)Socket 类。当客户程序需要与服务器程序通信的时候,客户程序要在客户机创建一个 Socket 对象。Socket 类常用的构造函数是 Socket(String host, int port) ,它创建一个基于Socket 的连接服务器 流套接字的客户 流套接字。如果创建了一个Socket 对象,它可以通过调用 Socket 的 getInputStream()方法从服务程序获得输入流传送来的信息,也可以通过调用Socket 的 getOutputStream()方法获得输出流,来发送消息。在读写活动完成之后,客户程序必须调用close()方法关闭流和流套接字。
(2 )ServerSocket 类。服务器端有一个专门的ServerSocket 对象,ServerSocket 有几个构造函数,最简单的是ServerSocket(int port) 。服务 首先构造一个ServerSocket 对象(port 参数传递的端口号就是服务器监听连接请求的 口),创建完成后就开始准备接收连接请求。接下来服务程序进入循环,循环从调用 ServerSocket 的accept()方法开始 (accept()方法将导致 调用线程阻塞直到连接建立),建立连接后accept()返回一个绑定了客户程序的IP 地址或端口 号的Socket 对象。由于存在单个服务程序与多个客户程序通信的可能,解决方法是 服务器 主机运行一个处理服务程序和客户程序的通信后台线程。