什么是 socket?
通常,服务器在特定计算机上运行,并具有绑定到特定端口号的套接字。服务器只是 await,侦听套接字以请求 Client 端发出连接请求。
在 Client 端:Client 端知道运行服务器的计算机的主机名和正在侦听的端口号。为了发出连接请求,Client 端try在服务器的机器和端口上与服务器会合。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 端的连接。本课向您展示如何使用Socket
和ServerSocket
类。
如果您try连接到 Web,则URL
类和相关类(URLConnection
,URLEncoder
)可能比套接字类更合适。实际上,URL 是 Web 的较高级别的连接,并使用套接字作为基础实现的一部分。有关通过 URL 连接到 Web 的信息,请参见使用网址。