Force telnet client into character mode

Markus Wandel picture Markus Wandel · Nov 7, 2008 · Viewed 16k times · Source

I have an application where I accept a socket connection from a telnet client and put up a simple, keyboard driven character GUI.

The telnet client, at least on Linux, defaults into line-at-a-time mode, so I always have to do ^]mode char manually.

A skim of the relevant RFCs suggests that if my application simply sent the characters IAC DONT LINEMODE (\377\376\042) as soon as the client connects, the client should be forced into character mode. However, it doesn't make any difference.

What's the simplest bit of code that would do the job? Ideally just a string to be sent. My application can absorb whatever junk the client sends back.

Answer

Jack picture Jack · Jul 1, 2009

Interesting. I had more luck sending

IAC WILL ECHO IAC WILL SUPPRESS_GO_AHEAD IAC WONT LINEMODE
255  251    1 255  251                 3 255  252       34

The IAC WONT LINEMODE seems to be redundant: my telnet client seems to get to the right state without it, but I left it in for completeness.