#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. Спасибо за подсказку, это помогло. 🙂 Извините за столь поздний ответ, боюсь, я просто забыл вам ответить.