Получение TypeError: требуется байтоподобный объект, а не 'str' при запуске клиента - PullRequest
0 голосов
/ 22 марта 2020

Поэтому, когда я запускаю клиентский модуль, терминал отправляет обратно сообщение об ошибке: «TypeError: требуется объект, похожий на байты, а не 'str'". Я закодировал сообщение, отправленное клиентом, поэтому я не уверен, что не так. Буду признателен за любую помощь в выяснении проблемы!

Вот мой client.py:

import socket


def client_program():
    host = socket.gethostname()
    port = 5000

    client_socket = socket.socket()
    client_socket.connect((host, port))

    message = input(" -> ")

while message.lower().strip() != 'bye':
    client_socket.send(message.encode())
    data = client_socket.recv(1024).decode()

    print('Received from server: ' + data)

    message = input(" -> ")

client_socket.close()


if __name__ == '__main__':
    client_program()

Вот мой server.py:

import socket
import sys
from _thread import start_new_thread


HOST = ''
PORT = 5000
try:
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as msg:
    print("Could not create socket. Error Code: ", str(msg[0]), "Error: ", msg[1])
    sys.exit(0)

print("[-] Socket Created")

try:
    s.bind((HOST, PORT))
    print("[-] Socket Bound to port " + str(PORT))
except socket.error as msg:
    print("Bind Failed. Error Code: {} Error: {}".format(str(msg[0]), msg[1]))
    sys.exit()

s.listen(10)
print("Listening...")

def client_thread ( conn): conn.send («Добро пожаловать на сервер. Введите сообщения и нажмите Enter для отправки. \ n»)

while True:
    data = conn.recv(1024)
    if not data:
        break
    reply = "OK . . " + data
    conn.sendall(reply)
conn.close()


while True:
    conn, addr = s.accept()
    print("[-] Connected to " + addr[0] + ":" + str(addr[1]))

    start_new_thread(client_thread, (conn,))

s.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...