为什么 socket.bind() 在这里期望一个整数?

Why does socket.bind() expect an integer here?

我对网络编程还很陌生。我正在尝试设置一个 Web 服务器,并且正在尝试将欢迎套接字绑定到本地主机地址和作为命令行参数传递的任意端口号。但是,socket.bind() 方法一直给我错误,说它需要一个整数而不是一个字符串,而据我从文档中可以看出,主机地址应该是一个字符串。

我尝试了 gethostname、gethostbyname 和两者的组合来解决此错误,但似乎没有任何效果。

这是我编写的程序片段:

from socket import *
import sys

port_number = sys.argv[1]
server_sock = socket(AF_INET, SOCK_STREAM)
host = gethostbyname(gethostname())
print(host)
server_sock.bind((host, port_number))
server_sock.listen(1)
print('The server is online.')

准确地说,这是我得到的错误:"TypeError: an integer is required (got type str)"

我该如何解决这个问题?

端口需要是整数,因此将字符串port_number转换为整数:

server_sock.bind((host, int(port_number)))