Почему socket.bind () ожидает здесь целое число? - PullRequest
0 голосов
/ 18 октября 2019

Я очень новичок в сетевом программировании. Я пытаюсь настроить веб-сервер и пытаюсь связать приветствующий сокет с адресом localhost и произвольным номером порта, который передается в качестве аргумента командной строки. Тем не менее, метод 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: требуется целое число (получил тип str)"

Как мне это исправить?

1 Ответ

1 голос
/ 18 октября 2019

Порт должен быть целым числом, поэтому преобразуйте строку port_number в целое число:

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