首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从命令行解析端口号

从命令行解析端口号
EN

Stack Overflow用户
提问于 2020-02-04 05:30:53
回答 1查看 142关注 0票数 0

伙计们,我正在尝试在一个简单的聊天tcp服务器上工作,它允许从服务器和客户端来回发送消息。我必须在命令行中输入端口号,而不是在中硬编码。我尝试过多种方法,但这是我最近的一次尝试。我收到关于portnum不是整数的错误,并且

代码语言:javascript
复制
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"))

下面是我尝试改变它的方法

代码语言:javascript
复制
portnum = input("Enter port number")
s.bind((socket.gethostname(), portnum))
s.listen(5)

我也尝试过这样做:

代码语言:javascript
复制
port = sys.argv[1:] and port = int(sys.argv[1])

但是我一直收到错误,而且它不工作

EN

回答 1

Stack Overflow用户

发布于 2020-02-04 05:36:05

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

您应该添加一个检查来验证输入是否为数字,将其转换为int并将其作为端口号传递。

代码语言:javascript
复制
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.")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60047438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档