Я написал этот код, используя Python 2.7:питона 'TypeError: аргумент должен быть строкой или только для чтения буфера символов, а не кортеж'
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