Переменные клиента из списка аргументов

#python-2.7 #client #variadic-functions

#python-2.7 #клиент #переменные-функции

Вопрос:

Я попытался запустить TCP-клиент, используя список аргументов. Я не хочу каждый раз вводить переменные «хост» и «порт», поэтому я хотел, чтобы моя программа брала их из списка. Но когда я запускаю его, я получаю ошибку «имя ‘host’ не определено name» и «имя ‘port’ не определено» (он начинает работать только тогда, когда я сам объявляю «host» и «port»). Я поместил все это в main, так почему же он не видит объявление этих двух переменных?

 import socket
import sys
import getopt

if __name__ == '__main__':
    arguments = sys.argv[1:]
    argumentList = getopt.getopt(arguments, 'h:p:')[0]

    for arg, val in argumentList:
        if arg == '-h':
            host = val
        if arg == '-p':
            port = int(val)
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    client.connect((host, port))
    client.send('GET / HTTP/1.1rnHost: {0}rnrn'.format(host))
    print client.recv(1024)
  

Комментарии:

1. как вы вызываете свою программу? вы должны установить для host и port значения по умолчанию (например, -1) и проверить это на случай, если вызывающий абонент забудет передать обязательные параметры.

2. Спасибо за подсказку, это помогло. 🙂 Извините за столь поздний ответ, боюсь, я просто забыл вам ответить.