On Thu, 26 Feb 2009 11:46:24 +0100, jkv <j...@unixcluster.dk> wrote:
Hi,
Are there any way to change the EOL character for sys.stdin.readline() and
raw_input()?
My problem is that i cannot rely on that the clients connection to my
application will end all lines with \n or \r\n. Sometimes they will use
\r\000 as EOL.
Example from my code:
sys.stdout.write('Password: ');
#IAC DO ECHO sys.stdout.write('\xFF\xFB\x01')
password = raw_input()
If the client sends 'qwerty\r\n' everything is fine and the password get
stored in the variable. But sometimes, depending on how broken the telnet
client are, the client will send 'qwerty\r\000' instead and then my
application will hang at 'password = raw_input()' forever.
Any suggestions?
It sounds like you might want to use a real implementation of the telnet
protocol in your application. Such an implementation would deal with the
fact that telnet encodes \r as \r\0 for you.
Twisted includes a telnet implementation, as well as facilities for reading
stdin asynchronously (which will let you avoid indefinite hangs).
Jean-Paul
--
http://mail.python.org/mailman/listinfo/python-list