Эхо-сервер Python не работает
Я пытаюсь реализовать простой эхо-сервер с использованием Python. Вот мой код, взятый из разных интернет-источников:
#!/usr/bin/python
import socket
host = "192.168.253.134"
port = 33333
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(5)
print "Server on {server}:{port} is running...".format(server=host, port=port)
sock, addr = s.accept()
while True:
buffer = sock.recv(128)
if buffer == 'exit':
sock.send("bye")
break
elif buffer:
sock.send(buffer)
sock.close()
print "Server is closed..."
Проблема заключается в том, что когда я подключаюсь к серверу и набираю команду exit, сервер не закрывает соединение, а выдает ответ на мой собственный запрос (((Я заметил, что буфер на самом деле "exit\n", но такие комбинации, как "exit\n", не работать (((Я не вижу проблемы. Кажется, что этот код работает, но не на моей Ubuntu (((
1 ответ
Разрыв строки (также известный как перевод строки) также отправляется, поэтому исправьте с помощью полосы, чтобы удалить разрыв строки (\n
):
while True:
buffer = sock.recv(128)
if buffer.strip() == 'exit':
sock.send("bye")
break
elif buffer:
sock.send(buffer)