Принимая server.accept вне времени цикла позволит вашему клиенту отправить в нескольких командах:
from socket import *
server = socket(AF_INET, SOCK_STREAM)
server.bind((gethostname(), 23))
server.listen(5)
(connection, address) = server.accept()
while 1:
data = connection.recv(1024)
print data
if data=='X':
break
connection.close()
Там еще пару проблем с этим: ваш сервер только позволит одному клиенту. Пока один клиент подключен, ни один другой клиент не может подключиться. Вы можете решить эту проблему, используя потоки (которые могут быть сложными для правильного выбора) или с помощью модуля выбора.
И telnet отправляет новые строки, поэтому данные никогда не будут «X». Вы можете проверить с помощью if data.strip() == 'X':
Кроме того, если ваш клиент отключается, данные будут пустой строкой. Таким образом, вы можете добавить дополнительные проверки также:
if not data:
break
да, но если клиент посылает «ааа» сервер получит сообщение и распечатать его и сервер DonT закрыть соединение !! после того, как клиент отправит «www», сервер не распечатает никаких сообщений !! но соединение остается активным! –