#python #sockets #tcp #putty
Вопрос:
Я работаю над проектом, в котором мне нужно подключить две разные программы на python через TCP/IP. Программа 1 должна считывать данные из txt-файла, а затем пересылать данные в программу 2, которая затем выполнит некоторые задачи с этими данными и вернет результаты в программу 1.
Для этого необходимо использовать TCP — соединение. Я попытался установить соединение с помощью PuTTY (Raw), но я могу подключить только одну из программ, и я действительно не понимаю, как будет установлено соединение между двумя программами.
Код для программы 1 следующий
import time import tcputils sError = (0, "ERROR") sInfo = (2, "INFO") sDEBUG = (3, "DEBUG") def errlog(sev, msg): if sev[0] lt;= sDEBUG[0]: print("[" sev[1] "]: " str(msg)) def main(): server = tcputils.Server(4533) while True: try: if not server.listening(): server.start() continue if not server.got_client(): server.get_connection() continue req = server.get_request() if req is not None: # reading the .txt with open("example.txt", "r") as file: lists = [] for line in file: lists = [line.strip()] # string adjustments lists = str(lists).split("[", 1)[1] lists = str(lists).split("]", 1)[0] str = str(lists).split(",") # string subdivision into azimuth, elevation and time i = 0 for i in range(len(pass_str)): data = str[i].split() el = data[0].split("'", 1)[1] az = data[1] time = data[2].split("'", 1)[0] i = i 1 server.send_response(f"P {az} {el}n") print(f"P {az} {el}n") time.sleep(1) except Exception as e: errlog(sError, e) server.stop() if __name__ == "__main__": main()
Я импортировал tcputils, который является настройкой сервера сокетов и клиента. Обе программы работают с tcputils. Я бы вставил код сюда, но в нем почти 300 строк кода…
Я надеюсь, что кто-нибудь сможет объяснить мне, как работает сервер и клиент, когда вы пытаетесь подключить две разные программы.
Я уже могу установить соединение с Putty, и данные отображаются там. Но я не понимаю, как я заставлю его использоваться другой программой
Комментарии:
1. «Я действительно не понимаю, как будет установлена связь между этими двумя программами». Вам нужно разобраться в этом, прежде чем кто-нибудь сможет вам сильно помочь. TCP — соединение всегда создается ровно между одним сервером (который прослушивает сокет) и одним клиентом (который открывает соединение с сервером). Как только соединение установлено, данные могут передаваться в обоих направлениях. Ваш код здесь-сервер, а Putty-клиент, поэтому вы можете их подключить. Предположительно, вы хотите сделать программу 2 клиентом и подключить ее к программе 1?
2. @RichardAshAudacity Это было действительно полезно, спасибо! Программа 1 теперь является Клиентом, а Программа 2-Сервером. Но когда я пытаюсь их подключить, я получаю сообщение об ошибке, в котором говорится: ожидается str, байт или bytearray, а не нетип » gt; «не поддерживается между экземплярами» int » и «Нетип».
3. Поскольку у вас сейчас другие программы и другая проблема , вам придется опубликовать эти программы (или их части, которые все еще представляют собой полные программы, создающие проблему), возможно, в новом вопросе.
4. Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточной детализацией для определения адекватного ответа.