Te lnet потеря соединения при нажатии клавиши - PullRequest
0 голосов
/ 17 января 2020

Я сейчас играю с серверами программирования на python впервые и использую te lnet для своего текущего. Я использую имя testserver.py в качестве моего файла, содержащего код сервера в Python.

python testserver.py

. Я могу предоставить код сервера, если это необходимо, но моя основная проблема связана с вводом следующего текста в командная строка:

telnet localhost 8000

Где 8000 - произвольное число, используемое для представления моего порта. Затем я нажимаю Enter и te lnet подключается к хосту. Но как только я нажимаю клавишу на клавиатуре, отображается содержимое сервера, в моем случае «Hello, World!», И te lnet теряет соединение. По сути, мой сеанс te lnet заканчивается, но мне нужно держать его открытым ... Как я могу это исправить?

1 Ответ

0 голосов
/ 17 января 2020

Как упомянуто в комментарии telnet должно поддерживать соединение, пока оно не отключено. Если вы используете следующий серверный код, вы должны увидеть желаемое поведение:

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind(('0.0.0.0', 9999))
s.listen(1)

c,remote=s.accept()

while(len(c.recv(4096)) > 0):
    c.send("ok\n".encode())

Запустите приведенное выше, что-то вроде python server.py, и тогда вы сможете получить что-то вроде следующего поведения из te lnet, который я смог проверить только сейчас на изображении python:3.7.3-stretch docker (с добавлением te lnet).

root@c4a34304039b:/# telnet localhost 9999
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
test
ok
test2
ok
...