Почему я вижу 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)))