# Create server

**URL:** <https://www.ruby-forum.com/t/create-server/134751>\
**Category:** Ruby\
**Created:** [April 14, 2008, 8:06pm UTC](https://www.ruby-forum.com/t/create-server/134751 "2008-04-14T20:06:07Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![Vince\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/7ba0ec/32.png) [@Vince\_F](https://www.ruby-forum.com/u/Vince_F)\
**Post date:** [April 14, 2008, 8:06pm UTC](https://www.ruby-forum.com/t/create-server/134751/1 "2008-04-14T20:06:07Z")

</div>

Hi all,

I am interested in using GServer but the server hangs after ~5-10  
attempts  
(per max connections to allow). Example code I used is from Peter  
Coopers  
book, Beginning Ruby From Novice to Professional:

[http://www.springerlink.com/content/ph5611n3q3uu0619/](http://www.springerlink.com/content/ph5611n3q3uu0619/)

Is this normal?

Thanks.

Vince

---

<div class="post-metadata">

**Author:** ![Vince\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/7ba0ec/32.png) [@Vince\_F](https://www.ruby-forum.com/u/Vince_F)\
**Post date:** [April 14, 2008, 8:16pm UTC](https://www.ruby-forum.com/t/create-server/134751/2 "2008-04-14T20:16:47Z")

</div>

Figured it out.

I need to sleep between successive calls to TCPSocket.new (see simple  
example below):

require ‘socket’  
for i in 0…20  
session = TCPSocket.new(‘localhost’, ‘1234’)  
session.puts “test”  
dat = session.gets  
p dat  
session.close  
sleep 0.5  
end

Using ‘sleep 0’ cause the server to hang. Is there a way around this?

Vince

---

<div class="post-metadata">

**Author:** ![Vince\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/7ba0ec/32.png) [@Vince\_F](https://www.ruby-forum.com/u/Vince_F)\
**Post date:** [April 14, 2008, 8:46pm UTC](https://www.ruby-forum.com/t/create-server/134751/3 "2008-04-14T20:46:53Z")

</div>

On Tue, 2008-04-15 at 03:16 +0900, Vince F. wrote:

> p dat  
> session.close  
> sleep 0.5  
> end
> 
> Using ‘sleep 0’ cause the server to hang. Is there a way around this?

Perhaps then you should paste server code, rather than client code.

---

<div class="post-metadata">

**Author:** ![Vince\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/7ba0ec/32.png) [@Vince\_F](https://www.ruby-forum.com/u/Vince_F)\
**Post date:** [April 16, 2008, 3:42pm UTC](https://www.ruby-forum.com/t/create-server/134751/4 "2008-04-16T15:42:58Z")

</div>

Solved my problem. Used select instead of threads to implement the  
server.  
Got the code from “The Ruby P.ming Language”. What a great book!

Vince

---

<div class="post-metadata">

**Author:** ![Vince\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/7ba0ec/32.png) [@Vince\_F](https://www.ruby-forum.com/u/Vince_F)\
**Post date:** [April 14, 2008, 8:55pm UTC](https://www.ruby-forum.com/t/create-server/134751/5 "2008-04-14T20:55:13Z")

</div>

Sorry, here is the code:

require ‘gserver’  
class HelloServer \< GServer  
def serve(io)  
line = io.gets  
io.puts("#{line.chomp}")  
end  
end  
server = HelloServer.new(1234, ‘127.0.0.1’, 1)  
server.audit = true  
server.start  
server.join

---

<div class="post-metadata">

**Author:** ![Vince\_F](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/v/7ba0ec/32.png) [@Vince\_F](https://www.ruby-forum.com/u/Vince_F)\
**Post date:** [April 17, 2008, 12:00am UTC](https://www.ruby-forum.com/t/create-server/134751/6 "2008-04-17T00:00:05Z")

</div>

Hi,

I’m glad you solved your problem, I just had two comments:

- “#{line.chomp}” is equivalent to line.chomp.
- sleep 0 by definition sleeps forever:  
puts “A”  
sleep 0  
puts “B”

B is never written

Dan
