python
July 10, 2023

socket - передача параметров между программами

Если у вас уже запущены две программы Python, и вы хотите передать параметры из одной программы в другую, то можно использовать сокеты для обмена данными между ними.

В первой программе (python1.py) вы можете создать серверный сокет, который будет прослушивать на определенном порту и ждать подключений от клиента (python2.py). После подключения клиента, вы можете отправить параметры через сокет.

Во второй программе (python2.py) вы можете создать клиентский сокет, подключиться к серверу (python1.py) и получить переданные параметры через сокет.

Пример кода для передачи параметров из python1.py в python2.py:

python1.py:

pythonCopy Codeimport socket

HOST = 'localhost'  # Хост сервера
PORT = 12345  # Порт сервера

params = ['param1', 'param2', 'param3']  # Параметры для передачи
data = ' '.join(params).encode()  # Преобразование параметров в байты

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.bind((HOST, PORT))
    s.listen(1)
    print('Ожидание подключения клиента...')
    conn, addr = s.accept()
    print(f'Подключение клиента установлено: {addr}')

    conn.sendall(data)  # Отправка параметров
    conn.close()

python2.py:

pythonCopy Codeimport socket

HOST = 'localhost'  # Хост сервера
PORT = 12345  # Порт сервера

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    print('Подключение к серверу установлено')

    data = s.recv(1024)  # Получение параметров от сервера
    params = data.decode().split()

print(params)  # Вывод полученных параметров

В данном примере python1.py является сервером, который отправляет параметры по запросу клиента (python2.py), а python2.py является клиентом, который подключается к серверу и получает переданные параметры. Обратите внимание, что в данном примере параметры передаются в виде списка и преобразуются в строку с использованием пробелов в python1.py, а затем восстанавливаются обратно в список в python2.py.

Вы можете запустить программы python1.py и python2.py параллельно и увидеть, как параметры передаются из одной программы в другую.