关于从 SocketServer 返回的 Socket 对象

about the returned Socket object from SocketServer

我有一个很简单的问题,但是我被一个教程弄糊涂了。

比如说,我创建了一个服务器并使用端口 1234:

ServerSocket server = new ServerSocket(1234);

然后,我要求服务器等待请求:

while(true) {
  // is the returned socket represents the server side socket or client side socket???
  Socket socket = server.accept();
}

我的问题是 return 由 server.accept() 编辑的套接字是服务器端套接字还是客户端套接字?在Java doc.

中没有很好的解释

之所以问这个问题是因为当我运行socket.getPort()时,它没有return服务器端口1234,相反,它 return 是一个不是我定义的端口,所以,我认为它可能是客户端的套接字。但我不确定。

Listens for a connection to be made to this socket and accepts it. The method blocks until a connection is made.

这意味着它是服务器。

socket.getPort() 根据 javadoc,

Returns the remote port number to which this socket is connected.

Socket有两端,一端通过OutputStream向另一端发送信息,并通过InputStream从另一端接收信息。另请参阅 Socket 上的 getInputStream() 和 getOutputStream() 方法。

按照您的说法,您可以将套接字视为服务器端,因为 InputStream 正在从已连接到服务器的客户端接收信息,而 OutputStream 正在向客户端发送信息。

通常,一旦使用 server.accept() 方法获取套接字,使用您获取的套接字创建的线程应该用于与客户端通信,以便您的服务器可以同时处理多个客户端同时。