#python-3.x #list #sockets #memoryview
#python-3.x #Список #розетки #просмотр памяти
Вопрос:
Я пытаюсь подключить сокет с помощью следующего кода
try:
# create an INET, STREAMing socket
self.client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# now connect to the web server on port 80 - the normal http port
self.client.connect((host, port))
user = ['User.loginByToken', access_token]
self.client.sendall(user)
# self.client._locust_environment = self.environment
except Exception as e:
color_print("n[!] Check Server Address or Port", color="red", underline=True)
это выдает ошибку memoryview: a bytes-like object is required, not 'list'
. что я могу сделать, чтобы решить эту проблему?
Комментарии:
1. Это не исключение, которое вы получаете, но в любом случае вы можете отправлять и получать байты только через сокет, поэтому вам нужно кодировать свои данные в байт-подобный объект. Кодирование a
str
легко, напримерUser.loginByToken'.encode('utf-8')
, даст вамbytes
объект. Я понятия не имею, чтоaccess_token
это такое, поэтому вам нужно будет выяснить, как это закодировать. Вероятно, лучшим решением является использование протокола более высокого уровня, но без более подробной информации я ничего не мог предложить.
Ответ №1:
Для отправки через сокет вам необходимо преобразовать пользовательскую переменную в байты: Вы можете попробовать это:
import json
user = json.dumps({'User.loginByToken': access_token})
user = user.encode("utf-8")