ubuntu python socket accept () не отвечает - PullRequest
0 голосов
/ 13 июля 2020

Я сейчас работаю над Ubuntu и столкнулся со следующей проблемой. У меня есть аппаратное обеспечение, представляющее собой ПЛИС, и я хочу отправлять и получать от него данные. Проблема в том, что когда я хочу принять соединение, оно не отвечает. Я подключил свое аппаратное обеспечение к своему P C через кабель rnet через кабель USB-to-Ethe rnet. Когда я включаю свой P C, HW-соединение работает, и я могу отправлять и получать данные от него, но соединение inte rnet не работает, потому что мой P C распознает мое HW как сетевое соединение. Когда я отключаю свое HW, мой P C устанавливает мое обычное соединение ethe rnet, и я могу подключиться к inte rnet, но после того, как я снова хочу подключиться к моему HW, часть accept() не отвечает. Вот мой код

class TCPServer:
    def __init__(self):
        self._cmd_port = 5002
        self._data_port = 5001
        self._host = '192.168.1.11'

        _clean_ports(self._cmd_port, self._data_port)

        self._cmd_socket = self._set_socket_opt(self._cmd_port)
        self._data_socket = self._set_socket_opt(self._data_port)

        print(f'waiting for HW connection...')
        self._client_command, _ = self._cmd_socket.accept()
        self._client_data, _ = self._data_socket.accept()
        print(f'HW connected...')

    def _set_socket_opt(self, port):
        __sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        __sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
        __sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        __address = (self._host, port)
        __sock.bind(__address)
        __sock.listen(1)
        return __sock

. Как я уже сказал, пока я не отключился от него, я смогу подключиться к inte rnet, он работает нормально. После того, как я отключился и снова подключился, я запускаю свою программу, и она печатает «Ожидание подключения HW ...» , а self._cmd_socket.accept() не отвечает. Я не знаю, почему возникает эта проблема. Я пробовал это тысячи раз за месяц до этого, и это сработало отлично. Возможно, произошло какое-то обновление Ubuntu, или я не знаю. Я попытался включить порты с помощью ufw (https://www.digitalocean.com/community/tutorials/how-to-set-up-a-firewall-with-ufw-on-ubuntu-18-04) и почти всего. Совершенно не понимаю, почему это было нормально до 1 месяца go и почему сейчас не работает

Пс. отлично работает на Windows ОС.

...