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项目之——聊天室(知识积累)
最新推荐文章于 2024-06-15 23:08:53 发布