0

我在考试中有以下问题:

“让我们假设您想为客户端使用 UDP。您是否需要创建一个新的套接字来管理 UDP 中的并行连接?为什么或为什么不?如果多个客户端连接到该套接字会发生什么?”

该问题还引用了一个 Java 类TCPServer.java,该类创建 ServerSocket,稍后在while(true)循环中,它接受连接并为来自用户的传入连接请求创建套接字。

在我看来,TCP Server 仅用于 TCP 连接,因此无法为 UDP 客户端使用相同的服务器端代码。

4

2 回答 2

2

你在正确的轨道上。

ServerSockets用于 TCP 连接。DatagramSockets(仍然是无连接的)用于 UDP。

并回答另一部分,即“如果多个客户端连接到该套接字会发生什么?” 答案是:

  1. 如果是UDP,那就没问题,因为它是无连接的
  2. 如果是 TCP,那么 ServerSocket 应该会看到连接请求,并创建一个新的 Socket 用于与该客户端进行双向通信

要回答“为什么或为什么不” - UDP 是无连接的,因此不使用新的 Socket 进行通信。UDP 只接收一个 DatagramPacket,然后丢弃它(如果应用程序确定它无效、格式错误等),或者它回复一个 DatagramPacket。在 UDP 中没有连接,没有连接状态,也没有输入/输出流。

于 2011-09-22T21:32:46.627 回答
0

该问题要求您解释为什么为什么不。因此,本质上,如果您不相信 ServerSocket 代码适用于 UDP,那么您必须说出原因。从你的最后一句话我相信你已经知道了问题的答案,现在你只需要自信地写下来。

于 2011-09-22T21:33:38.230 回答