Справочная информация : У меня есть сценарий TCP Socket python, настроенный на Raspberry Pi 4 для связи с компьютером, не подключенным к сети. На машине настроены команды, которые я посылаю ему через сокет с запросом "Каково значение A?" и машинный ответ - это значение A. Хотя я не очень хорошо знаком с кодировкой машины, я понимаю, что при запросе таким образом она печатает значение. Я получаю эти данные через сокет, просто вставив socket.sendall("What is the value of A")
, а затем сразу socket.recv(SIZE)
. Моя аналогия - это как бросать мяч в стену одной рукой, а ловить другой. Соединение выполняется с помощью кабеля Ethe rnet длиной около 100 футов.
Проблема : я могу довольно часто запрашивать через этот сокет, вплоть до того момента, когда я могу отправлять 60 массивов ввода назад и вперед между 5-10 разами, но в конце концов соединение закрывается вверх. Я не совсем уверен, почему это так. Дошло до того, что я должен отключить все, закрыть все розетки и просто дать ему немного времени, прежде чем пытаться снова. Хотя диагностика проблемы может быть неясной без полного понимания машины (о которой я не могу дать больше информации), я склоняюсь к использованию потоков для запуска двух независимых процессов: один поток для запроса, один поток для получения , Я полагаю, что recv()
пропускает пресловутый шар, а затем сидит и ждет ответа от машины, но машина больше никогда не говорит, потому что код остается ждать. У меня нет большого опыта работы с потоками, и поэтому буду признателен за некоторые предложения. Другая мысль состоит в том, что кабель Ethe rnet слишком длинный для Pi, чтобы справиться с передачей такого большого количества данных. Это кажется более наивным, но я не сетевой инженер и поэтому не претендую на полное понимание этого процесса.
Заранее спасибо, не стесняйтесь задавать любые уточняющие вопросы.