В Python можно использовать модуль socket
для создания клиент-серверных приложений и установки соединения между ними. Если вы хотите, чтобы клиент ждал запуска сервера, вам нужно сделать следующее:
1. Напишите серверный код, который будет прослушивать определенный порт и ждать входящих подключений от клиентов. Например:
import socket def start_server(): HOST = 'localhost' # Измените на свой IP-адрес, если вы хотите прослушивать не только локальные подключения PORT = 12345 # Измените на свой порт server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.bind((HOST, PORT)) server_socket.listen(1) print('Сервер запущен и ждет подключения клиента...') # Ждем подключения клиента client_socket, client_address = server_socket.accept() print(f'Клиент подключился с адресом {client_address}') # В этом месте можно сделать что-то с клиентским сокетом, например, прочитать данные или отправить ответ клиенту # Но для вашей цели просто подержим сервер запущенным # Закрываем сокеты client_socket.close() server_socket.close() start_server()
2. Напишите клиентский код, который будет пытаться подключиться к серверу. Если сервер уже запущен, то клиент подключится и выполнит какие-либо операции. Если сервер еще не запущен, то клиент будет ждать, пока сервер не будет доступен. Например:
import socket import time def connect_to_server(): HOST = 'localhost' # Измените на IP-адрес сервера, к которому вы хотите подключиться PORT = 12345 # Измените на порт сервера, к которому вы хотите подключиться client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) while True: try: client_socket.connect((HOST, PORT)) break except ConnectionRefusedError: print('Сервер недоступен. Повторная попытка подключения через 1 секунду...') time.sleep(1) print('Клиент успешно подключен к серверу') # В этом месте можно сделать какие-либо операции с сервером, например, отправить запрос или получить данные # Закрываем сокет client_socket.close() connect_to_server()
Теперь, когда вы запускаете серверный код и затем клиентский код, клиент будет ждать, пока сервер не будет доступен. Как только сервер будет запущен и готов к принятию подключений, клиент успешно подключится к серверу и сможет продолжить выполнение операций.