Перенаправление портов с помощью сокетов и создание общедоступного кода сокета

#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, он сообщает, что соединение отказано.