UDP通信需要Java ServerSocket吗?

我在考试中有以下问题:

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

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

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

你走在正确的轨道上。

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

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

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

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

这个问题要求你解释为什么不这样做 。 所以从本质上讲,如果您不相信ServerSocket代码可以用于UDP,那么您必须说明原因。 从你的最后一句我相信你知道问题的答案,现在你只需要自信地写下来。