@Slavik0981

Проблема с СОКЕТАМИ в Python не по локальной сети?

Нужна помощь. Создал чат клиент-сервер По локальной сети работает, а через интернет НЕТ. И посмотрел внешний IP на 2ip.ru после ввода айпи в серверной части программы начала выскакивать ошибка OSError: [WinError 10049] Требуемый адрес для своего контекста неверен. Что делать?
Айпи статический.
Код сервера:

# -*- coding: utf-8 -*- 
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
s.bind(('ВНЕШНИЙ АЙПИ',9090))
while 1:
	message = s.recv(128)
	print (message)
  • Вопрос задан
  • 6000 просмотров
Пригласить эксперта
Ответы на вопрос 3
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
1. Реальный внешний IP указываете в коде биндовки, запускаете и проверяете здесь открыт порт или нет: https://portchecker.co/
2. Если роутер - тогда указываете (меняете!) в коде биндовки ВНУТРЕННИЙ IP компа и делаете проброс/mirroring порта из внешней сети внутрь.

Не нужно пробрасывать порт только тогда, когда IP компьютера совпадает с проверкой внешнего IP на любом веб-чекере, например на myip.ru. Это означает, что Ваш компьютер подключен напрямую к интернету без дополнительных промежуточных сетей (обычно, через роутер).
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Внешний IP, скорее всего на роутере, а на роутере - NAT. Нужно настроить проброс портов на комп внутри локальной сети.
Возможно, что внешний IP вообще у провайдера, а вам пров. выдает приватный адрес. В этом случае нужно за деньги покупать белый адрес у оператора.
Ответ написан
@Vchornyi
Добрый день, я новичок в этом деле.
Пытаюсь открыть Клиент/Сервер чат, как описано в https://www.youtube.com/watch?v=MPjgHxK8k68&t=59s

Имею Виндовс 10, запускаю два приложенных файла через Виндовс Консоль (cmd.exe):
  • python "D:\PATH_TO_FILE\server.py"
  • python "D:\PATH_TO_FILE\client.py"


Если в файле "client.py" оставлять строку server = ("192.168.0.101",9090), то ничего не происходит, то есть сервер "не получает" сообщения.
Если же поменять на пустой сервер server = ("",9090) , то выдаёт такую же ошибку, что и в заголовке - OSError: [WinError 10049] Требуемый адрес для своего контекста неверен.

Сложно понять, куда копать дальше, как определить Ай-Пи адрес (Сокет?) сервера, или вообще, как "разблокировать" порт в Виндовс.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы