Java项目之——聊天室(知识积累)


C/S 架构APP:聊天室
C 客户端:
Socket:代表客户端和服务器都用来互相沟通的套接字。
 五个构造方法:
  创建一个流套接字并将其 连接到指定主机上的指定端口号:public Socket(String host, int port)
  创建一个流套接字并将其连接到指定 IP 地址 的指定端口号:public Socket(InetAddress host, int port) throws IOException 
  创建一个套 接字并将其连接到指定远程主机上的指定远程端口: public Socket(String host, int port, InetAddress localAddress, int localPort) throws IOException
  创建 一个套接字并将其连接到指定远程地址上的指定远程端口: public Socket(InetAddress host, int port, InetAddress localAddress, int localPort) throws IOException
  通过系统默认类型的 SocketImpl 创建未连接套接字: public Socket() 
    ( 当 Socket 构造方法返回,并没有简单的实例化了一个 Socket 对象,它实际上会尝试连接到指定的服务器和端口。)
 常用方法:
  将此套接字连接到服务器,并指定一个超时值: public void connect(SocketAddress host, int timeout) 
  返回套接字连接的地址:public InetAddress getInetAddress() 
  返回此套接字连接到的远程端口:public int getPort() 
  返回此套接字绑定到的本地端口:public int getLocalPort() 
  返回此套接字连接的端点的地址(如果未连接则返回 null):public SocketAddress getRemoteSocketAddress() 
  返回此套接字的输入流:public InputStream getInputStream() ;
  返回此套接字的输出流: public OutputStream getOutputStream() ;
  关闭此套接字: public void close() throws IOException 
S 服务器:
ServerSocket:监听客户端,并建立连接的机制
 四种构造方法:
   创建绑定到特定端口的服务器套接字: public ServerSocket(int port)  
   利用指定的 backlog 创建服务器套接字并将其 绑定到指定的本地端口号:public ServerSocket(int port, int backlog)
   使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器: public ServerSocket(int port, int backlog, InetAddress address) 
     (backlog提供了容量限制功能,避免太多的客户端socket占用太多服务器资源 )
   创建非绑定服务器套接字:public ServerSocket() throws IOException 
     (创建非绑定服务器套接字。 如果 ServerSocket 构造方法没有抛出异常,就意味着你的应用程序已经成功绑定到指定 的端口,并且侦听客户端请求。)
 
 常用方法:
   返回此套接字在其上侦听的端口: public int getLocalPort() 
   侦听并接受到此套接字的连接: public Socket accept() throws IOException 
   指定超时值启用/禁用 SO_TIMEOUT: public void setSoTimeout(int timeout) 
   将 ServerSocket 绑定到特定地址(IP 地址和端口号): public void bind(SocketAddress host, int backlog)
  
当服务器与客户端建立连接后,通过输入输出流(客户端的 socket)来通信
 以下步骤在两台计算机之间使用套接字建立TCP连接时会出现:
服务器实例化一个 ServerSocket 对象,表示通过服务器上的端口通信。 
服务器调用 ServerSocket 类的 accept() 方法,该方法将一直等待,直到客户端连接到服务器上给定的端口。 
服务器正在等待时,一个客户端实例化一个 Socket 对象,指定服务器名称和端口号来请求连接。 
Socket 类的构造函数试图将客户端连接到指定的服务器和端口号。
如果通信被建立,则在客户端创建一个 Socket 对象能够与服务器进行通信。
在服务器端,accept() 方法返回服务器上一个新的 socket 引用,该 socket 连接到客户端的 socket
连接建立后,通过使用 I/O 流在进行通信,每一个socket都有一个输出流和一个输入流,客户端的输出流连接到服 务器端的输入流,而客户端的输入流连接到服务器端的输出流。
 

你可能感兴趣的:(Java)