为什么我看到python套接字模块的TypeError?

时间:2019-08-19 13:51:00

标签: python-3.6 python-socketio

我正在学习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()

在这里,我将用户的输入作为主机名。然而。上述porgram无法将主机名转换为整数。我遇到错误了

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

我试图通过以下方式在用户输入上引入for循环,从而使用某种python方法摆脱该问题

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

因此,基于错误,我在“ n”上使用了str()函数。但是当我这样做时,我得到以下错误:

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

我还搜索了互联网上存在的上述错误,但解决方案无济于事。

请帮助我理解我的错误。

谢谢

1 个答案:

答案 0 :(得分:1)

input要求端口为connect时,

int返回一个字符串。

client_socket.connect((lic_server_host, int(port)))