Как переадресовать порт для сокета сервера, используя коды Python? - PullRequest
0 голосов
/ 01 мая 2018

Я очень новичок в программировании сокетов и только что попытался написать простой скрипт сервер / клиент. Когда я пытался общаться с ними на моем собственном устройстве, это работало. Но когда я передал свой сценарий другу, чтобы мы могли общаться удаленно, он не работал (я не использовал 'localhost' как hostname).

Затем он перенаправил порт, используя HTTP-интерфейс своего маршрутизатора, и попытался соединить его с веб-сайтом, который проверяет, переадресован ли порт, это было положительно (мой сценарий не подключился, но это не наша тема).

Итак, я понял, что должен перенаправить порт, который будет использовать и мой сервер! Но используемый мной маршрутизатор не принадлежит мне, поэтому я не могу подключиться к интерфейсу HTTP. В этом случае моя программа должна перенаправить порт. Но я не знаю, как это сделать, и я не смог найти пример или пример моего уровня.

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

Мой маленький сценарий:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

print('1. Server')
print('2. Client')
r = int(input("I'm going to be... "))

if r == 1:

    host = socket.gethostname()
    port = int(input('My port will be... (0 for auto) '))
    s.bind((host, port))
    sockName = s.getsockname()

    print("\nYour Hostname: %s \nYour Port: %d" % (sockName[0], sockName[1]))

    #s.listen(int(input('Listen for ... clients')))
    input('Enter to listen...')
    print('Listening...')
    s.listen(1)

    for i in range(1):
        client, address = s.accept()
        print("{}:{} connected!".format(address[0], address[1]))

        message = input('Your message (/c to close): ')
        if message == '/c':
            client.send(message)
            print('You sent: ', message.encode('UTF-8'))
        else:
            client.close()
            s.close()
            break;


elif r == 2:

    host = input('The Hostname of Server is... ')
    port = int(input('The Port of Server is... '))

    print("\nServer's Hostname: %s \nServer's Port: %d" % (host, port))

    input('Enter to connect...')
    s.connect((host, port))
    print('Connected!')

    message = s.recv(4096)
    print('Server: ', message.decode('UTF-8'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...