Помогите исправить ошибку в коде 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 шт):
У вас проверка на сервере и клиенте одинаковая: if command == ("test"):, но данные в command будут разные.
На сервере в command будет строка, т.к. input вернет строку.
На клиенте в command будет байтовая строка, т.к. по сокетам байты передаются. А т.к. b"test" не будет равной "test", то условие попадает в else. Вы, кст, на сервер строку отправляете как байты (метод encode возвращает байты).
Попробуйте на клиенте сделать так:
...
data = client.recv(2048)
command = data.decode("utf-8")
if command == "test":
...