【发布时间】:2021-07-31 01:55:21
【问题描述】:
我正在尝试使用 TCP 中的“接受”功能来实现 UDP 服务器。那是因为我需要为每个客户保留一个频道。我的问题是如何让 UDP 套接字从特定客户端(特定客户端的 ip 和端口)接收数据?
TCP 使用一个主 Socket(在一个线程内)接收来自客户端的请求。一旦来自客户端的请求到来,主套接字就会打开另一个套接字来与该客户端通信(在另一个线程中)。要实现这个机制,绑定套接字以接收来自特定客户端的数据包的能力必须可用。我所要求的这种能力。如何重新实现 UDP 套接字的“接受”功能?其中(据我所知)无法绑定 Socket 以从特定客户端接收。我的问题是如何使它成为可能?
【问题讨论】:
-
您的问题不清楚。请将您的代码显示为minimal reproducible example,描述它当前的功能,然后描述您需要它做什么而不是它没有做什么。
-
帖子已编辑,希望现在更好。谢谢
-
不,请不要只用文字描述代码。它几乎永远不够精确。请构建一个最小的可重现示例来说明上下文和问题。你的问题还是太不清楚了。 可能相关的一般信息:UDP 是一种无连接协议。单个 UDP 套接字可以从多个不同的客户端接收。不需要
accept,因为这仅与基于连接的协议有关。 -
'绑定套接字以接收来自特定客户端的数据包的能力必须可用'是的,您可以使用 IP/port/userContext 的用户空间列表来做到这一点。