什么是 socket?

通常,服务器在特定计算机上运行,并具有绑定到特定端口号的套接字。服务器只是 await,侦听套接字以请求 Client 端发出连接请求。

在 Client 端:Client 端知道运行服务器的计算机的主机名和正在侦听的端口号。为了发出连接请求,Client 端try在服务器的机器和端口上与服务器会合。Client 端还需要向服务器标识自己,以便 Client 端绑定到将在此连接期间使用的本地端口号。这通常是由系统分配的。

Client 端的连接请求

如果一切顺利,则服务器接受连接。接受后,服务器将获得一个绑定到相同本地端口的新套接字,并且还将其远程端点设置为 Client 端的地址和端口。它需要一个新的套接字,以便它可以 continue 侦听原始套接字的连接请求,同时满足所连接 Client 端的需求。

构建连接

在 Client 端,如果连接被接受,则套接字成功创建,并且 Client 端可以使用该套接字与服务器进行通信。

Client 端和服务器现在可以通过写入或读取套接字进行通信。

Definition:

  • socket *是网络上运行的两个程序之间 Double 向通讯链接的一个端点。套接字与端口号绑定,以便 TCP 层可以识别将数据发送到的应用程序。

端点是 IP 地址和端口号的组合。每个 TCP 连接都可以通过其两个端点来唯一标识。这样,您可以在主机和服务器之间构建多个连接。

Java 平台中的java.net包提供了一个Socket类,该类实现 Java 程序与网络上另一个程序之间 Double 向连接的一侧。 Socket类位于依赖于平台的实现之上,可从 Java 程序中隐藏任何特定系统的详细信息。通过使用java.net.Socket类而不是依赖于本机代码,您的 Java 程序可以以独立于平台的方式通过网络进行通信。

此外,java.net包括ServerSocket类,该类实现了一个套接字,服务器可以使用该套接字来侦听并接受与 Client 端的连接。本课向您展示如何使用SocketServerSocket类。

如果您try连接到 Web,则URL类和相关类(URLConnectionURLEncoder)可能比套接字类更合适。实际上,URL 是 Web 的较高级别的连接,并使用套接字作为基础实现的一部分。有关通过 URL 连接到 Web 的信息,请参见使用网址