Подключение к localhost отклонено в подсистеме Ubuntu на Windows

Вопрос или проблема

Я создал модель сервер-клиент на Python в Linux. Когда я запускаю сервер в подсистеме Ubuntu на Windows, всё работает нормально. Но когда я запускаю клиент (который пытается подключиться к серверу), я получаю эту ошибку:

Traceback (most recent call last):
File "client.py", line 64, in <module>
s.connect('127.0.0.1',port)
File "client.py", line 19, in connect
self.sock.connect((host, port))
File "/usr/lib/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 111] Connection refused

Сервер слушает на localhost и порту = 14345, и клиент пытается подключиться к тому же. Я также попробовал telnet 127.0.0.1 14345 и получил ту же ошибку:

Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

Я также попробовал netstat -an в cmd на Windows, и это показало следующее:

TCP    127.0.1.1:14345        0.0.0.0:0              LISTENING

Это означает, что сервер действительно слушает, но клиент из подсистемы Linux не может к нему подключиться.

Код также работает нормально на реальном Linux (то есть на установленном на жестком диске Ubuntu).

Если вы используете сторонние антивирусные программы/фаерволы в Windows, попробуйте временно отключить их и посмотрите, восстановится ли соединение. В качестве меры безопасности вы можете временно использовать встроенные антивирусные программы/фаерволы Windows вместо этого. Если вы используете Ubuntu в WSL, вы можете установить приложение gufw для управления вашим Linux-файрволом.

Это известная проблема, что сторонние фаерволы плохо взаимодействуют с подсистемой Windows для Linux. Смотрите Нет интернета с антивирусом/фаерволом третьих сторон и apt-get update и установка не удалась для получения дополнительных сведений.

Ответ или решение

Ошибка подключения к localhost в Ubuntu Subsystem на Windows: Решение проблемы

Если вы столкнулись с ошибкой "Connection refused" при попытке установить соединение между клиентским и серверным приложением в Ubuntu Subsystem for Windows (WSL), это может быть вызвано несколькими причинами. В данной статье мы подробно рассмотрим возможные источники проблемы и предложим шаги для их устранения.

1. Проверка состояния сервера

Ваша ошибка указывает на то, что клиент не может подключиться к серверу, который, как вы утверждаете, работает на localhost на порту 14345. Первоначально убедитесь, что сервер действительно слушает на этом порту и доступен для подключения. В вашем случае команда:

netstat -an

показывает, что сервис слушает на 127.0.1.1:14345. Однако это может стать источником проблемы, так как клиентская часть вашего приложения пытается подключиться к 127.0.0.1, в то время как сервер слушает на 127.0.1.1.

2. Изменение ip-адреса в клиенте

Попробуйте изменить 127.0.0.1 на 127.0.1.1 в коде клиента:

s.connect(('127.0.1.1', port))

3. Настройки файрвола и антивирусного ПО

Если изменение ip-адреса не решает проблему, следующим шагом будет проверка настроек брандмауэра и антивирусного программного обеспечения на вашем Windows. Иногда сторонние брандмауэры могут блокировать соединения в среде WSL.

  • Выключите временно сторонние антивирусные программы и брандмауэры. После этого проверьте, решить ли это проблему с соединением.
  • Если вы используете встроенные инструменты безопасности Windows, убедитесь, что они не блокируют соединения на порту 14345.

4. Использование встроенного брандмауэра WSL

Если у вас установлен gufw или любой другой графический интерфейс для управления файрволом в WSL, убедитесь, что он правильно настроен и не блокирует входящие соединения. Попробуйте временно отключить его, чтобы протестировать уходящие соединения от клиента к серверу.

5. Дополнительные проверки

  • Убедитесь, что сервер запущен и слушает на правильном порту. Запускайте сервер перед запуском клиента.
  • Проверьте, нет ли ошибок в коде как на сервере, так и на клиенте. Убедитесь, что сервер корректно инициализирует сокет и слушает.
  • Проверка на других портах. Попробуйте перенастроить ваш сервер на другой порт (например, 8080) и протестировать соединение.

Заключение

Ошибка "Connection refused" может возникнуть из-за различных факторов, начиная от неправильной настройки IP-адреса и портов, заканчивая ограничениями, наложенными брандмауэром или антивирусным ПО. Начинайте решение проблемы с проверки сети, после чего переходите к анализу firewall и других внешних факторов. Следуя предложенным шагам, вы сможете установить соединение между вашим клиентом и сервером в Ubuntu Subsystem for Windows.

SEO-оптимизация

Если вы ищете решение проблемы с подключением к localhost в WSL, используйте ключевые слова, такие как "WSL localhost connection refused", "Ubuntu Subsystem Windows socket error" или "firewall settings for WSL". Это поможет вам находить информацию, соответствующую вашей проблеме, в поисковых системах.

Оцените материал
Добавить комментарий

Капча загружается...