Собственно, ошибка: TypeError:
a bytes-like object is required, not 'str'
Ошибка в строке " sock.send('Hello, World") "
Ошибка нашлась в приложении клиента, вот собственно код клиента:
import socket
sock = socket.socket()
sock.connect(('localhost', 9090))
sock.send('hello, world!')
data = sock.recv(1024)
sock.close()
print(data)
Вот код сервера:
import socket
sock = socket.socket()
sock.bind(('', 9090))
sock.listen(1)
conn, addr = sock.accept()
print('connected:', addr)
while True:
data = conn.recv(1024)
if not data:
break
conn.send(data.upper())
conn.close()
Я этот пример вообще списал, т.к только-только (буквально пару минут назад) начал изучение сокетов, а тут такое.
Ответ
Метод socket.send ожидает последовательность байтов, а не строку. Чтобы преобразовать строку в последовательность байтов, можно воспользоваться методом str.encode
sock.send("hello, world!".encode())
Аналогично, если вы хотите получить не последовательность байтов, а строку, то можно воспользоваться методом str.decode
data = sock.recv(1024).decode()
По умолчанию в качестве кодировки будет использован UTF-8.
Комментариев нет:
Отправить комментарий