这是我参与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
今天就学到这里吧,仔细理解以下这部分,晚安~