summaryrefslogtreecommitdiffstats
path: root/Lib/telnetlib.py
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/telnetlib.py')
-rw-r--r--Lib/telnetlib.py26
1 files changed, 26 insertions, 0 deletions
diff --git a/Lib/telnetlib.py b/Lib/telnetlib.py
index 8cf372e..efb2b40 100644
--- a/Lib/telnetlib.py
+++ b/Lib/telnetlib.py
@@ -376,6 +376,9 @@ class Telnet:
def interact(self):
"""Interaction function, emulates a very dumb telnet client."""
+ if sys.platform == "win32":
+ self.mt_interact()
+ return
while 1:
rfd, wfd, xfd = select.select([self, sys.stdin], [], [])
if self in rfd:
@@ -393,6 +396,29 @@ class Telnet:
break
self.write(line)
+ def mt_interact(self):
+ """Multithreaded version of interact()."""
+ import thread
+ thread.start_new_thread(self.listener, ())
+ while 1:
+ line = sys.stdin.readline()
+ if not line:
+ break
+ self.write(line)
+
+ def listener(self):
+ """Helper for mt_interact() -- this executes in the other thread."""
+ while 1:
+ try:
+ data = self.read_eager()
+ except EOFError:
+ print '*** Connection closed by remote host ***'
+ return
+ if data:
+ sys.stdout.write(data)
+ else:
+ sys.stdout.flush()
+
def expect(self, list, timeout=None):
"""Read until one from a list of a regular expressions matches.