我使用Python 2.7写了这个代码:蟒蛇“类型错误:参数必须是字符串或只读字符缓冲区,而不是元组”
class LoadBalancerHandler:
def __init__(self, file_name):
self.server_socket = socket.socket(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
file = open(file_name)
setup_apps(file.read())
def listen(self, host='localhost', port=80):
self.server_socket.bind((host,port))
self.server_socket.listen(5)
while True:
(client_socket, address) = self.server_socket.accept()
threadHandling = ThreadHandling(client_socket, self)
threadHandling.start()
,但我得到这个错误:
TypeError: argument must be string or read-only character buffer, not tuple
这错误是由行提出:self.server_socket.bind((host,port))
您对socket.socket(...)的选项看起来很可疑。请参阅https://docs.python.org/2/library/socket.html。你可能意味着socket.socket(socket.AF_INET,socket.SOCK_STREAM)??? – Stanton
你用什么参数来调用'listen'?添加'print(repr(host),repr(port))'看看你得到了什么。 – tdelaney
例如,假设你调用'someobject.listen(('localhost',80))'',就是说你传递了一个元组作为'host',你可能会得到这样的错误。 – tdelaney