python - 从命令行解析端口号
问题描述
伙计们,我正在尝试在一个简单的聊天 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])
但我不断收到错误,但它不起作用
解决方案
input
将始终将用户的输入转换为字符串。https://docs.python.org/3/library/functions.html#input
您应该添加一个检查以验证输入是否为数字,将其转换为 anint
并将其作为端口号传递。
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.")
推荐阅读
- reactjs - React 语义 UI 表显示和隐藏列
- c# - 如何使用 src 属性在 html 中打开安全 url
- python - PySyft Worker 过拟合
- javascript - 我不知道为什么我在控制台#javascript 中试图创建牛顿第一个方程的计算器
- html - HTML显示客户端列表
- php - 强制刷新后更新的数据显示(Yii2)
- angular - 访问表单控件的方式不同
- angular-material - 屏幕阅读器(NVDA)未读取垫选择的预选值和展开/折叠状态
- javascript - 我在 html 中创建了一个自定义分页,我的上一个和下一个按钮不起作用
- sql - 在 SQL 中的事务回滚后,ID 会增加