从零开始学java - 第二十天

138 阅读2分钟

这是我参与11月更文挑战的第20天,活动详情查看:2021最后一次更文挑战

今天继续~

Socket编程

  • socket使用TCP提供了两台计算机之间的通信机制。客户端创建socket,服务端接收socket
  • 连接建立时,服务器会创建一个socket对象,两端可以通过socket对象来进行读取和写入等操作
  • java.net.Socket代表一个socket,java.net.ServerSocket为服务器监听客户端

使用Socket进行TCP连接的步骤

  • 服务器实例化一个ServerSocket对象
  • 服务器调用对象的accept()方法来进入等待状态
  • 客户端实例化一个Socket对象,指定服务器名称和端口号来请求连接
  • 在服务端,accept()方法返回服务器上一个新的socket引用,该socket连接到客户端的socket ps:连接建立后,每个socket都有一个输出流和输入流,客户端输出->服务器输入,客户端输入->服务器输出

ServerSocket类的方法

  • ServerSocket来自服务端,用来侦听客户端的请求,获取Socket对象需要使用accept()方法
  • 以下是创建ServerSocket:

ServerSocket(int port) - 创建绑定到特定端口的服务器socket

ServerSocket(int port,int backlog) - 利用指定的backlog创建服务器socket并绑定到指定的端口

ServerSocket(int port,int backlog,InetAddress address) - 使用指定的端口、侦听backlog和要绑定的本地ip创建服务器

ServerSocket() - 创建非绑定的服务器Socket

  • 下面是常用的一些方法:

getLocalPort() - 返回Socket侦听的端口

accept() - 侦听并接收socket连接

setSoTimeout(int timeout) - 设置超时时间

bind(SocketAddress host,int backlog) - 将ServerSocket绑定到特定地址(ip,端口号)

Socket类的方法

  • Socket来自客户端,获取Socket对象需要实例化
  • 下面是Socket的构造方法:

Socket(String host,int port) - 创建一个socket并连接到指定主机的指定端口号

Socket(InetAddress host,int port) - 创建一个socket并连接到指定ip的指定端口号

Socket(Stirng host,int port,InetAddress localAddress,int localPort) - 创建一个socket并连接到指定远程主机上的指定远程端口

Socket(InetAddress host,int port,InetAddress localAddress,int localPort) - 创建一个socket并连接到指定远程地址上的指定远程端口

Socket() - 创建一个未连接的socket

  • 以下的方法是socket对象的方法,所以无论是客户端还是服务端都可以调用:

connect(SocketAddress host,int timeout) - 连接socket并指定一个超时值

getInetAddress() - 返回socket连接的地址

getport() - 返回socket连接的远程端口

getLocalPort() - 返回socket绑定的本地端口

getRemoteSocketAddress() - 返回socket连接的端点地址,如果未连接则返回null

getInputStream() - 返回socket输入流

getOutputStream() - 返回socket输出流

close() - 关闭socket

今天就学到这里吧,仔细理解以下这部分,晚安~