# IO.getc (Based off of #45 MUD)

**URL:** <https://www.ruby-forum.com/t/io-getc-based-off-of-45-mud/110388>\
**Category:** Ruby\
**Created:** [July 25, 2007, 11:37pm UTC](https://www.ruby-forum.com/t/io-getc-based-off-of-45-mud/110388 "2007-07-25T23:37:05Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Ari\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a698b9/32.png) [@Ari\_B](https://www.ruby-forum.com/u/Ari_B)\
**Post date:** [July 25, 2007, 11:37pm UTC](https://www.ruby-forum.com/t/io-getc-based-off-of-45-mud/110388/1 "2007-07-25T23:37:05Z")

</div>

I have some questions about sockets, IO.getc(), and IO.ready?().

So my telnet server accepts  
connections. That works.  
It displays the  
prompt.  
That works.  
It accepts the single characters (IO.getc) without pressing return.  
That works.  
But wait! Whenever I connect to the server (telnet localhost), there  
is always this string of characters that are:

??%??&??&??^C??? ???"??’???

Where are those characters coming from, and is there a suitable  
workaround? I tried instituting a sleep 1 to allow the characters to  
pass (assuming it was a short stream), but they still came. I also  
noticed that this only happens when I press enter (which for me shows  
up a ^M. bwah?).

CODE:  
loop do  
character = sock.getc  
if sock.ready?

# puts sock.ready?

# puts sock

```
       case character
       when ?\C-c
         print "^C"

```

# break

```
       when ?\r, ?\n, ?\C-M
         $writer[$output_buffer]
         show_prompt
       else
         $output_buffer << character
         print character.chr
       end
     end

```

I had to comment out ‘break’ so that I wouldn’t get disconnected  
during the initial character stream.

What’s going on?

Thanks,  
-------------------------------------------------------|  
~ Ari

---

<div class="post-metadata">

**Author:** ![Ari\_B](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/a698b9/32.png) [@Ari\_B](https://www.ruby-forum.com/u/Ari_B)\
**Post date:** [July 26, 2007, 5:27am UTC](https://www.ruby-forum.com/t/io-getc-based-off-of-45-mud/110388/2 "2007-07-26T05:27:47Z")

</div>

On Jul 25, 2007, at 4:35 PM, Ari B. wrote:

> ??%??&??&??^C??? ???"??'???  
> Those are telnet codes you will need to recognize and remove. Your  
> client sends those to determine the features of the server. I  
> discuss this a little and give code for it in this old quiz summary:

[Ruby Quiz - Cows and Bulls (#32)](http://rubyquiz.com/quiz32.html)

James Edward G. II
