我正在设计一个数据分发器(比如生成随机数),它将为多个客户提供服务。
客户端 C 首先通过 TCP 向 DD 发送它感兴趣的号码列表,并在 UDP 上侦听数据。一段时间后(几分钟),客户可能会通过向 DD 发送更多号码来更新其订阅列表。
我可以用两种方式设计它。
第一的:
New_Client_Connected_Thread(int sock_fd)
{
--Get Subscription
--Add to UDP Publisher List
--close(sock_fd)
}
每次客户端想要订阅新的数据集时,它都会建立一个新的 TCP 连接。
第二:
New_Client_Connected_Thread(int sock_fd)
{
while(true)
{
--wait for new subscription list
--Get subscription
--Add to UDP Publisher List.
}
}
这里每个客户端只需要 1 个 TCP 连接。
但是,如果客户端不发送新请求,Client_Thread 将不必要地等待很长时间。
鉴于我的数据分发器将为许多客户提供服务,其中哪一个似乎是有效的方式?