【发布时间】:2020-07-03 12:04:54
【问题描述】:
我有一整天都在努力解决的问题。情况如下:
- 我有一个服务器列表 - 比如说 10 个不同的服务器。
- 我想使用 sendto 命令向所有 10 台服务器发送提案广播消息。
- 然后我想监听并等待 10 个服务器响应 ACK + 一些消息。
- 一段时间后,使用来自已响应服务器的数据超时。 (时间会根据请求的数量而变化)
我想利用 UDP 使其独立于连接,但也担心如果我一次发送所有消息,我可能会错过一条消息,因为我没有阻止 revfrom 一直到所有消息都发送完毕。
我可以在每次发送后等待,但从广播的角度来看这似乎效率低下。
我也可以先设置一个监听线程,然后在单独的线程上运行 sendto,但随后监听器(即整个程序)在 main 之外的另一个线程上。
所以我的问题有两个:考虑到我正在尝试做的事情,这些方法中的哪一种(如果有的话)看起来最合适?其次,套接字上是否有任何队列。就像让我们说它不是 10 台,而是 1000 台服务器 - 如果一条消息在它还没有准备好接收时进入,这条消息会被丢弃吗?
我愿意接受有关其他实施方式的建议。
提前致谢!
【问题讨论】:
标签: c++ network-programming udp