伙计们,我正在尝试在一个简单的聊天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])但是我一直收到错误,而且它不工作
发布于 2020-02-04 05:36:05
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.")https://stackoverflow.com/questions/60047438
复制相似问题