How can I read only one character at a time?
Answer / chaitanya
This question is usually asked by people who are testing their server with telnet, and want it to process their keystrokes one character at a time. The correct technique is to use a psuedo terminal (pty). More on that in a minute.
You can have your server send a sequence of control characters: 0xff 0xfb 0x01 0xff 0xfb 0x03 0xff 0xfd 0x0f3, which translates to IAC WILL ECHO IAC WILL SUPPRESS-GO-AHEAD IAC DO SUPPRESS-GO-AHEAD. For more information on what this means, check out std8, std28 and std29. Roger also gave the following tips:
o This code will suppress echo, so you'll have to send the characters the user types back to the client if you want the user to see them.
o Carriage returns will be followed by a null character, so you'll have to expect them.
o If you get a 0xff, it will be followed by two more characters. These are telnet escapes.
Use of a pty would also be the correct way to execute a child process and pass the i/o to a socket.
| Is This Answer Correct ? | 0 Yes | 0 No |
How can I put a timeout on connect()?
How do I properly close a socket?
How can I find the full hostname (FQDN) of the system I am running on?
What exactly does SO_REUSEADDR do?
Can a single socket port be used for multiple applications?
Can multiple sockets use the same port?
If bind() fails, what should I do with the socket descriptor?
What is the purpose of socket?
How do I get the port number for a given service?
What is a sae socket?
What is the difference between a socket and a port?
What exactly does SO_LINGER do?