2012-12-06 19 views
0

假设我们在端口6000上的本地主机(称为服务器A)上运行服务器。我们有我们自己的客户端与服务器通信(发送消息到服务器A)。服务器A不时发送消息到另一台运行在端口7000上的服务器(比如服务器B),这也在我们的控制之下。我们的客户应该根据服务器B.收到某些消息根据来自Python客户端的事件触发事件并将消息发送到服务器

这是一组的是我想达到

  1. OurClient发送消息(JOIN)到服务器A
  2. 例如步骤将消息发送到服务器服务器A发送消息(确认),以SERVERB
  3. 服务器A发送消息(PATH_CLEAR)到SERVERB
  4. 服务器B通知(PATH_CLEAR)到OurClient
  5. OurClient发送消息(MOVE_FOR WARD)到服务器A
  6. 服务器A发送消息(MOVED_FORWARD_BY_A_CELL)到SERVERB
  7. 服务器A发送消息(OBSTACLE_AHEAD)到SERVERB
  8. 服务器B通知(OBSTACLE_AHEAD)到OurClient
  9. OurClient发送消息(STOP)到服务器A
  10. 服务器A发送消息(停止)到ServerB ...... ....

我已经使用在Python插座模块连接到服务器并创建OU r客户端和服务器。我应该使用线程来实现这种行为吗?如果是这样,我该怎么做?

我试图这样做 这里是我用于该 How to trigger to responses from a server using python socket programming

的代码,但一旦对方服务器接受我的“#JOIN”消息我不能再发送消息。第一条消息后,我的客户端不会发送消息。我该如何解决?

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

+0

可能您应该使用xmlrpc,[RPyC](http://rpyc.sourceforge.net/index.html)或[Pyro](http://pypi.python.org/pypi)这样的高级RPC库/ Pyro4)。否则,您必须向我们显示您的代码... – schlamar

+0

如果您未显示任何代码,则很难理解您做错了什么。通常在套接字上,很可能在同一个套接字上发送多条消息。 – LtWorf

+0

我的代码显示在上述问题的链接中。如果我重申它: http://stackoverflow.com/questions/13501007/how-to-trigger-to-responses-from-a-server-using-python-socket-programming – maheshakya

回答

0

您不需要使用多线程,只需使用模块“select”,并且我建议使用方法poll来知道哪些文件描述符已准备好使用。

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

相关问题