[rubygems/rubygems] Use a constant empty tar header to avoid extra allocations
[ruby.git] / sample / svr.rb
blobeb49ccf1700ce1fb97c8f23d85eaf434cf55391b
1 # socket example - server side
2 # usage: ruby svr.rb
4 # this server might be blocked by an ill-behaved client.
5 # see tsvr.rb which is safe from client blocking.
7 require "socket"
9 gs = TCPServer.open(0)
10 addr = gs.addr
11 addr.shift
12 printf("server is on %s\n", addr.join(":"))
13 socks = [gs]
15 loop do
16   nsock = select(socks);
17   next if nsock == nil
18   for s in nsock[0]
19     if s == gs
20       ns = s.accept
21       socks.push(ns)
22       print(s, " is accepted\n")
23     else
24       if s.eof?
25         print(s, " is gone\n")
26         s.close
27         socks.delete(s)
28       # single thread gets may block whole service
29       elsif str = s.gets
30           s.write(str)
31       end
32     end
33   end
34 end