一个接一个地连接到不同服务器的Python客户端

一个接一个地连接到不同服务器的Python客户端,python,sockets,Python,Sockets,我是python新手,正在用python编写套接字代码。我有三台不同的机器(机器A、机器B和机器c),IP地址分别为1.1.1.1、IPb和IPc 现在,我希望我的机器A作为服务器A运行一个线程,作为客户端A运行一个客户端线程。相同的代码将在机器B和C中运行。客户端A将检查服务器B是否正在侦听。如果服务器B未侦听,请尝试连接到服务器c。如果服务器c未侦听,请连接到服务器A并执行某些操作 我的代码如下: import os, sys, socket, time, threading Host =

我是python新手,正在用python编写套接字代码。我有三台不同的机器(机器A、机器B和机器c),IP地址分别为1.1.1.1、IPb和IPc

现在,我希望我的机器A作为服务器A运行一个线程,作为客户端A运行一个客户端线程。相同的代码将在机器B和C中运行。客户端A将检查服务器B是否正在侦听。如果服务器B未侦听,请尝试连接到服务器c。如果服务器c未侦听,请连接到服务器A并执行某些操作

我的代码如下:

import os, sys, socket, time, threading
Host = 1.1.1.1
PORT = 1111
threads = []
threadss =[]
def server():
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        s.bind((HOST, PORT))
        while 1:
            print ("Listening")
            s.listen()
            conn, addr = s.accept()
            with conn:
                print("connected")
                data = conn.recv(1024)
                if data == b'please sleep':
                    time.sleep(300)
                if data == b'do something': 
                    print("do something")
def client():
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    while 1:
        try:
           s.connect((IPaddress of Machine B, Port of machineB))
        except Exception as inst:
            print("machine B not ready")
            try:
               s.connect((IP address of Machine C, Port of MAchine c))
            except Exception as inst:
               print("machine c not ready"))
               s.connect(('1.1.1.1', 1111))
               s.sendall(b'do something')


serv = threading.Thread( target=server)
threads.append(serv)
serv.start()
print("starting the thread serv")
time.sleep(3)
cli=threading.Thread(target = client)
threadss.append(cli)
cli.start()
print("client started")
在以下情况下,我无法执行该操作: 客户端A检查服务器B和服务器c是否处于活动状态,如果其中任何一个处于活动状态,则会向服务器A发送消息以使其休眠


提前感谢您的帮助

你能更具体地说明你在努力解决的问题吗?另一方面,像这样使用
异常除外
是不好的做法,请参阅,例如,我在客户端A能够连接到服务器B的场景中遇到了困难。在这种情况下,客户端A应该向服务器A发送消息“请睡眠”