Почему я вижу TypeError для модуля сокета Python?

Я изучаю Python, и в настоящее время я пытаюсь работать с модулем сокета. Ниже приведена логика на стороне клиента.

import socket
from threading import Thread
import ipaddress


lic_server_host = input("Please enter the hostname: ")
port = input("Please enter the License service port number: ")
client_socket = socket.socket()
client_socket.connect((lic_server_host, port))


def receive_data():
    while True:
        data = client_socket.recv(1000)
        print(data.decode())


def sending_data():
    while True:
        user_input = input()
        client_socket.sendall(user_input.encode())


t = Thread(target=receive_data)
t.start()
sending_data()

Здесь я принимаю пользовательский ввод в качестве имени хоста. Тем не мение. Приведенная выше часть не может преобразовать имя хоста в целое число. Я получаю ошибку ниже

client_socket.connect((lic_server_hostname, port))
TypeError: an integer is required (got type str)

Я попытался использовать некоторый способ на Python, чтобы избавиться от проблемы, введя цикл for на входе пользователя, как показано ниже

lic_server_host = input("Please enter the License server hostname: ")
for info in lic_server_hostname:
    if info.strip():
        n = int(info)
port = input("Please enter the License service port number: ")
client_socket = socket.socket()
client_socket.connect((n, port))

Но теперь я получаю ошибку ниже:

client_socket.connect((n, port))
TypeError: str, bytes or bytearray expected, not int

Поэтому, основываясь на ошибке, я использовал функцию str() для "n". Но когда я это делаю, я получаю ошибку ниже:

n = int(info)
ValueError: invalid literal for int() with base 10: 'l'

Я также искал вышеуказанную ошибку, доступную в Интернете, но решения не помогли мне.

Пожалуйста, помогите мне понять мою ошибку.

Спасибо

1 ответ

Решение

input возвращает строку, когда connect требует порт как int,

client_socket.connect((lic_server_host, int(port)))
Другие вопросы по тегам