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

新手上路,请多包涵

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

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

阅读 4k
2 个回答
✓ 已被采纳新手上路,请多包涵

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

clipboard.png

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

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题