serverSocket = new ServerSocket(portNumber)
我们创建了一个对象,它可以潜在地"监听"指定的端口。通过clientSocket = serverSocket.accept()
,我们强制服务器套接字 "监听" 其端口,并从试图通过与服务器关联的端口连接到服务器的任何客户端 "接受" 连接。当我说 "客户端试图连接到服务器" 时,我的意思是客户端程序执行 "nameSocket = new Socket(serverIP,serverPort)"。如果客户端正在尝试连接服务器,则服务器会 "接受" 此客户端(即创建一个与此客户端关联的 "客户端套接字")。
如果新的客户端试图连接到服务器,则服务器将创建另一个客户端套接字(与新的客户端相关联)。但是,服务器如何知道这是一个 "新" 的客户端还是已经有其套接字的 "旧" 客户端?或者换句话说,客户端如何被识别?通过他们的 IP?通过他们的 IP 和端口?通过某些 "标识符"?
如果一个 "旧" 的客户端再次尝试使用 Socket(serverIP,serverIP),会发生什么?服务器会为该客户端创建第二个关联的套接字吗?