【问题标题】:Parse a port number from the command line从命令行解析端口号
【发布时间】:2020-05-19 16:39:02
【问题描述】:

伙计们,我正在尝试在一个简单的聊天 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])

但我不断收到错误并且它不起作用

【问题讨论】:

  • 输入返回一个字符串。你需要:'portnum = int(input("输入端口号"))'
  • 非常感谢。花了一个小时研究这个,结果非常简单:)

标签: python parsing arguments port


【解决方案1】:

input 将始终将用户的输入转换为字符串。 https://docs.python.org/3/library/functions.html#input

您应该添加检查以验证输入是否为数字,将其转换为 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.")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-11-18
    • 2012-05-09
    • 2013-01-13
    • 1970-01-01
    相关资源
    最近更新 更多