Разбор номера порта из командной строки - PullRequest
0 голосов
/ 04 февраля 2020

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

import socket


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


s.bind((socket.gethostname(), 1234))
s.listen(5)

while True:
    clientsocket, address = s.accept()
    print(f"Connection from {address} has been established")
    clientsocket.send(bytes("Welocme to the server","utf-8"))

, и вот что я попытался изменить его тоже

portnum = input("Enter port number")
s.bind((socket.gethostname(), portnum))
s.listen(5)

Я также попытался сделать:

port = sys.argv[1:] and port = int(sys.argv[1])

но я продолжаю получать ошибки, и это не работает

1 Ответ

1 голос
/ 04 февраля 2020

input всегда приводит пользовательский ввод к строке. https://docs.python.org/3/library/functions.html#input

Вы должны добавить чек для проверки ввода цифрой c, привести его к int и передать его в качестве номера порта.

while True:
    portnum = input("Enter port number")
    if portnum.isnumeric():
        portnum = int(portnum)
        s.bind((socket.gethostname(), portnum))
        s.listen(5)
        ...
    else:
        print("Enter a valid port number.")

...