通过socket轮询服务器消息队列,但多客户端会出现互相读取

发布于 2022-09-11 19:49:20 字数 161 浏览 15 评论 0

服务器是使用socketserver实现的多客户端TCP连接,由于服务器执行任务会产生多条消息,把消息放到queue队列中,客户端每隔0.5s轮询获取,单客户端连接获取没问题,但多客户端就会出现queue队列数据部分出现在客户端A,部分出现在客户端B

想请问有没有什么好的想法解决这个问题?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小猫一只 2022-09-18 19:49:20

我已经解决了这个问题:
每个客户端访问时创建一个queue队列对象,把queue传递给客户端请求时调用的函数,
这样所有客户端请求的就是独立的队列对象,互不影响。

clipboard.png

空心↖ 2022-09-18 19:49:20

服务器的消息字节串里带上【客户端ip地址前缀】,然后存进queue;
客户端从queue中get()到消息后,检测ip前缀是否与自己相符,若不相符则重新put()进queue中。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文