Помогите исправить ошибку в коде Python socket

Помогите исправить ошибку в коде Python, код запускается но при вводе команды в server и ее дальнейшей отправки клиент должен смотреть что это за команда и давать ответ в зависимости от того что это за команда но вместо этого команда всегда переходит к else

у меня Python 3.8 работаю в Python IDLE

вот код:

server:

import socket

server = socket.socket(

    socket.AF_INET,
    socket.SOCK_STREAM, 

)

server.bind (


    ("127.0.0.1", 5555)

)

server.listen()


while True:
    user_socket, address = server.accept()

    def TEST():
        command = input ("plese input command ")
        if command == ("test"):
            user_socket.send("test".encode("utf-8"))
            TEST()

        else:
            user_socket.send("test_12345".encode("utf-8"))
            TEST()

    TEST()

client:

    import socket

client = socket.socket(

    socket.AF_INET,
    socket.SOCK_STREAM, 
)

client.connect(
    ("127.0.0.1", 5555)
)

while True:

    data = client.recv(2048)
    command = data
    if command == ("test"):
        print ("TEST")

    else:
        print ("TEST_12345")

Ответы (1 шт):

Автор решения: gil9red

У вас проверка на сервере и клиенте одинаковая: if command == ("test"):, но данные в command будут разные.

На сервере в command будет строка, т.к. input вернет строку.

На клиенте в command будет байтовая строка, т.к. по сокетам байты передаются. А т.к. b"test" не будет равной "test", то условие попадает в else. Вы, кст, на сервер строку отправляете как байты (метод encode возвращает байты).

Попробуйте на клиенте сделать так:

    ...
    data = client.recv(2048)
    command = data.decode("utf-8")
    if command == "test":
    ...
→ Ссылка