#python #sockets #python-3.x #portforwarding
#python #сокеты #python-3.x #перенаправление портов
Вопрос:
Я пытаюсь разрешить запуск моего кода с устройств в других сетях. Приведенный здесь код предназначен для моего сервера. Мой вопрос заключается в том, что при переходе к настройкам переадресации портов на моем маршрутизаторе, если я хочу, чтобы кто-то мог подключиться к сети, должен ли я указывать свой внешний IP или внутренний IP в настройках переадресации портов? И когда я запускаю клиент, чтобы попытаться подключиться, я даю им внешний IP и порт или внутренний IP и порт для попытки подключения?
import sockets
def main():
port = None
host = str(input("Enter ip to host on:"))
if host == "port_forward"
host = "192.xxx.x.x"
port = 9856
elif host == "my_ip":
host = socket.gethostbyname(socket.gethostbyname())
port = int(input("Enter port to listen to"))
else:
port=int(input("Enter port to listen to"))
s = socket.socket()
s.bind((host,port))
print("Host: " host " port:" str(port))
s.listen(1)
c, addr = s.accept()
print("Connection from:" str(addr))
while True:
data = c.recv(1024).decode('utf-8')
if not data:
break
print("from connected user:")
data = input("Enter text to send.")
c.send(data.encode('utf-8'))
c.close()
main()
Комментарии:
1. Вы могли бы просто сказать:
host = ""
и ваш сервер будет прослушивать все интерфейсы.. (Я не говорю, что это сработает для вас, я просто говорю, что это может быть связано с ограниченной информацией в вашем вопросе)2. @SuperSaiyan будет ли это работать для устройств, не входящих в мою сеть, чтобы я мог отправлять сообщения на компьютеры в других сетях? И с какого IP-адреса я должен войти в клиент?
3. Он будет работать оттуда, откуда вы сможете получить доступ к ip / порту. Реальный ответ будет зависеть от вашего сетевого макета. Например: вы напрямую подключены к Интернету, существуют ли какие-либо правила брандмауэра, существуют ли правила переадресации портов и т. Д. Переходя к вашему основному вопросу, вы должны запланировать настройку правил переадресации портов, таких как: Порт внешнего интерфейса A => внутренний ip X внутренний порт B. Вы подключаетесь через внешний ip и порт A
4. @SuperSaiyan Я думаю, я понимаю, что вы имеете в виду. Например, настройте переадресацию, чтобы данные из pub addr 78.321.45.41 и порт 8888 переходили на 192.168.5.27 на порту 5555, у меня исправлен код python, поэтому хост является внутренним или » и 5555, но когда я перехожу к клиенту с 78.321.45.41 с портом 8888, он сообщает, что соединение отказано.