Не удается удаленно подключиться к Python Socket - PullRequest
0 голосов
/ 26 мая 2019

Я создал приложение чата с использованием python-сокетов и Tkinter, и все это прекрасно работает локально, однако Клиент не может подключиться к серверу удаленно (когда я ввожу свой публичный IP-адрес в качестве хоста), я уже полностью перенаправлен через порт моя сеть и я хорошо знаем, как перенести порт вперед, и когда я запускаю онлайн-сканер Port Open, который проверяет, открыт ли порт, он сообщает, что порт открыт!?

Я переадресовал свой маршрутизатор на несколько портов и соответствующим образом обновил клиент и сервер, однако клиент и telnet все еще не могли подключиться. Я также отключил все свои брандмауэры Windows и отключил все брандмауэры маршрутизаторов.

Вот очень простая модель сокет-клиента и сервера, которую я пытаюсь решить, используя мою проблему.

Сервер

import socket

s = socket.socket()
host='0.0.0.0'

port = 2000
s.bind((host,port))

s.listen(5)
while True:
    c, addr = s.accept()
    print ("Got a connection from: ", addr)
    c.send(bytes("Thanks for connecting",'utf8'))
    c.close()

Клиент

import socket 

s = socket.socket()  
port = 2000    

s.connect(("109.156.114.183", port))
print (s.recv(1024))
s.close

Telnet

C:\Users\Maks>telnet 109.156.114.183 2000
Connecting To 109.156.114.183...Could not open connection to the host, on port 2000: Connect failed

Когда я пытаюсь подключиться к серверу на 127.0.0.1 или на локальном хосте, или из моей локальной сети, клиент подключается идеально, и telnet также может подключиться. Я на 200% уверен, что у меня правильно настроен переадресация порта, потому что когда я запускаю сканирование Port Open, он говорит, что порт (2000) открыт.

Пожалуйста, помогите! Спасибо- Maks

1 Ответ

0 голосов
/ 26 мая 2019

Я дома, поэтому в моей сети вообще не работает брандмауэр.

Этот комментарий был недостающим элементом для решения вашей проблемы.Вы на самом деле не подключаетесь удаленно, как предполагает ваш вопрос, но вы пытаетесь подключиться изнутри вашей локальной сети к внешне видимому адресу вашего маршрутизатора.

Такая настройка поддерживается некоторыми маршрутизаторами, а не другими.Похоже, ваш роутер не поддерживает его.Для получения дополнительной информации об этом см. закрепление NAT (или петля NAT) .

...