Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本引入的改进技术,并且可能使用不再可用的技术。
请参阅Java语言更改以了解Java SE 9及后续版本中的更新语言特性的概述。
请参阅JDK发布说明以获取有关所有JDK版本的新功能、增强功能以及已删除或弃用选项的信息。
通常,服务器运行在特定的计算机上,并具有绑定到特定端口号的套接字。服务器只是等待,监听套接字以等待客户端发出连接请求。
在客户端方面:客户端知道服务器所在的机器的主机名和服务器监听的端口号。为了发起连接请求,客户端尝试与服务器在服务器的机器和端口上会合。客户端还需要向服务器标识自己,因此在此连接期间绑定到一个本地端口号。这通常由系统分配。
如果一切顺利,服务器会接受连接。在接受连接后,服务器会获得一个新的套接字,该套接字绑定到相同的本地端口,并且其远程端点设置为客户端的地址和端口。它需要一个新的套接字,以便在处理已连接的客户端的需求时,继续监听原始套接字的连接请求。
在客户端上,如果连接被接受,则成功创建一个套接字,客户端可以使用该套接字与服务器进行通信。
客户端和服务器现在可以通过写入或从套接字读取来进行通信。
套接字是网络上运行的两个程序之间双向通信链路的一个端点。套接字绑定到一个端口号,以便TCP层可以识别数据要发送到的应用程序。
一个端点是IP地址和端口号的组合。每个TCP连接可以通过其两个端点唯一标识。这样,您可以在主机和服务器之间建立多个连接。
Java平台的java.net
包提供了一个类Socket
,该类实现了Java程序和网络上另一个程序之间双向连接的一方。Socket
类位于一个与平台相关的实现之上,隐藏了任何特定系统的细节,使得Java程序可以以平台无关的方式在网络上进行通信。
此外,java.net
包还包括ServerSocket
类,该类实现了服务器用于监听和接受来自客户端的连接的套接字。本课程将向您展示如何使用Socket
和ServerSocket
类。
如果您想连接到Web,URL
类和相关类(URLConnection
,URLEncoder
)可能比套接字类更适合。事实上,URL是与Web的相对高级连接,并使用套接字作为底层实现的一部分。有关通过URL连接到Web的信息,请参阅使用URL。