Python клиент подключается к разным серверам один за другим - PullRequest
0 голосов
/ 28 февраля 2020

Я новичок в python и пишу код сокета в Python. У меня есть три разных компьютера (машина A, машина B и машина c) с IP-адресами 1.1.1.1, IPb и IP c соответственно.

Теперь я хочу, чтобы моя машина 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 и активен ли кто-либо из них, тогда он отправляет сообщение на сервер А для сна.

Заранее благодарен за любую помощь !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...