【问题标题】:Event triggering and sending messages to a server according to those events from a client in Python在 Python 中根据来自客户端的事件触发事件并向服务器发送消息
【发布时间】:2012-12-07 08:15:31
【问题描述】:

假设我们在 localhost 的 6000 端口上运行一个服务器(比如服务器 A)。我们有自己的客户端与该服务器通信(向服务器 A 发送消息)。服务器 A 不时向运行在端口 7000 上的另一台服务器(例如服务器 B)发送消息,该服务器也在我们的控制之下。我们的客户端应该根据服务器 B 收到的某些消息向服务器发送消息。

这是我想要实现的一组示例步骤

  1. OurClient 向 ServerA 发送消息 (JOIN)
  2. ServerA 向 ServerB 发送消息(确认)
  3. ServerA 向 ServerB 发送消息 (PATH_CLEAR)
  4. ServerB 通知 (PATH_CLEAR) OurClient
  5. OurClient 向 ServerA 发送消息 (MOVE_FORWARD)
  6. ServerA 向ServerB 发送消息(MOVED_FORWARD_BY_A_CELL)
  7. ServerA 向ServerB 发送消息(OBSTACLE_AHEAD)
  8. ServerB 通知 (OBSTACLE_AHEAD) 给 OurClient
  9. OurClient 向 ServerA 发送消息 (STOP)
  10. ServerA 向 ServerB 发送消息(已停止) …… ....

我在 Python 中使用套接字模块连接到服务器并创建我们的客户端和服务器。我应该使用线程来实现这种行为吗?如果是这样,我该怎么做?

我试图这样做 这是我用过的代码 How to trigger to responses from a server using python socket programming

但是一旦其他服务器接受了我的“#JOIN”消息,我就不能再发送消息了。我的客户在第一条消息之后没有发送消息。我该如何解决这个问题?

是否有任何替代方法可以做到这一点,或者我应该对我的代码进行任何更改?

【问题讨论】:

  • 或许您应该使用高级 RPC 库,如 xmlrpc、RPyCPyro。否则,您必须向我们展示您的代码...
  • 如果您不显示任何代码,则很难理解您做错了什么。一般来说,在套接字上,很有可能在同一个套接字上发送多个消息。
  • 我的代码显示在上述问题的链接中。如果我重申:stackoverflow.com/questions/13501007/…

标签: python multithreading sockets python-multithreading


【解决方案1】:

你不需要使用多线程,你可以使用模块“select”,我建议使用方法poll,来知道哪些文件描述符可以使用。

通常使用 select 或 poll 比使用线程快。

【讨论】:

    猜你喜欢
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2015-05-10
    • 2021-11-05
    • 2014-08-12
    • 2017-01-12
    相关资源
    最近更新 更多