写点什么

26《重学 JAVA》-- 网络编程之 Socket 类

作者:杨鹏Geek
  • 2021 年 12 月 27 日
  • 本文字数:1049 字

    阅读完需:约 3 分钟

26《重学JAVA》--网络编程之Socket类

一、Socket 类

Socket 实质上提供了进程通信的端点。

报文之间的连接过程可以分为三个步骤:服务器监听,客户端请求,连接确认。

1. 服务器监听:是服务器端报文并不定位具体的客户端报文,而是处于等待连接的状态,实时监控网络状态。

2. 请求客户端:是指由客户端的报文提出连接请求,要连接的目标是服务器端的报文。为此,客户端的报文必须首先描述它要连接的服务器的报文,指出服务器端报文的地址和端口号,然后就向服务器端报文提出连接请求。

3. 确认连接:是指当服务器端报文监听到或者说接收到客户端报文的连接请求,它就响应客户端报文的请求,建立一个新的线程,把服务器端报文的描述发给客户端,一旦客户端确认了此描述,连接就建立好了。而服务器端报文继续处于监听状态,继续接收其他客户端报文的连接请求。

 

二、TCPSocket

TCPSocket 编程提供了两个核心类:Socket 和 ServerSocket,分别用来表示双向连接的客户端和服务器端。

 

Socket 常用的构造方法有:Socket(InetAddressaddress,intport):创建 Socket 对象,并指定远程主机 IP 地址和端口号。

 

Socket(InetAddressaddress,intport,InetAddresslocalAddr,intlocalPort):创建 Socket 对象,并指定远程主机 IP 地址和端口号,以及本机的 IP 地址(localAddr)和端口号(localPort)。

 

Socket(Stringhost,intport):创建 Socket 对象,并指定远程主机名和端口号,IP 地址为 null,null 表示回送地址,即 127.0.0.1。Socket(Stringhost,intport,InetAddresslocalAddr,intlocalPort):创建 Socket 对象,并指定远程主机和端口号,以及本机的 IP 地址(localAddr)和端口号(localPort)。

 

host 主机名,IP 地址为 null,null 表示回送地址,即 127.0.0.1。Socket 其他的常用方法有:InputStreamgetInputStream():通过此 Socket 返回输入流对象。

 

OutputStreamgetOutputStream():通过此 Socket 返回输出流对象。intgetPort():返回 Socket 连接到的远程端口。

 

intgetLocalPort():返回 Socket 绑定到的本地端口。

 

InetAddressgetInetAddress():返回 Socket 连接的地址。

 

InetAddressgetLocalAddress():返回 Socket 绑定的本地地址。

 

booleanisClosed():返回 Socket 是否处于关闭状态。

 

booleanisConnected():返回 Socket 是否处于连接状态。

 

voidclose():关闭 Socket。

 

注意 Socket 与流类似所占用的资源,不能通过 JVM 的垃圾收集器回收,需要程序员释放。一种方法是可以在 finally 代码块调用 close()方法关闭 Socket,释放流所占用的资源。另一种方法通过自动资源管理技术释放资源,Socket 和 ServerSocket 都实现了 AutoCloseable 接口。

 

发布于: 刚刚
用户头像

杨鹏Geek

关注

你必须比别人更努力 才能看起来毫不费力! 2019.10.26 加入

码农

评论

发布
暂无评论
26《重学JAVA》--网络编程之Socket类