Вывод server.accept из цикла while позволит вашему клиенту отправлять больше команд:
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