diff options
author | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-14 11:39:21 +0000 |
---|---|---|
committer | usa <usa@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2013-05-14 11:39:21 +0000 |
commit | e76eb06feb024828034379797129d92522e28516 (patch) | |
tree | 1326c625c233ba2554043203a7697f5e3d4c49e5 /ruby_1_9_3/sample/dualstack-httpd.rb | |
parent | aa6e98139c8e1ea442fb2182341aaa08ff55b529 (diff) | |
parent | bede15ac5e701ed08f3fc64c2dba03d3f393c652 (diff) |
add tag v1_9_3_426v1_9_3_426
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_9_3_426@40737 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'ruby_1_9_3/sample/dualstack-httpd.rb')
-rw-r--r-- | ruby_1_9_3/sample/dualstack-httpd.rb | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/ruby_1_9_3/sample/dualstack-httpd.rb b/ruby_1_9_3/sample/dualstack-httpd.rb deleted file mode 100644 index 11c5201d74..0000000000 --- a/ruby_1_9_3/sample/dualstack-httpd.rb +++ /dev/null @@ -1,55 +0,0 @@ -# simple httpd - -# The code demonstrates how a multi-protocol daemon should be written. - -require "socket" -require "thread" - -port = 8888 -res = Socket.getaddrinfo(nil, port, nil, Socket::SOCK_STREAM, nil, Socket::AI_PASSIVE) -sockpool = [] -names = [] -threads = [] - -res.each do |i| - s = TCPServer.new(i[3], i[1]) - n = Socket.getnameinfo(s.getsockname, Socket::NI_NUMERICHOST|Socket::NI_NUMERICSERV).join(" port ") - sockpool.push s - names.push n -end - -(0 .. sockpool.size - 1).each do |i| - mysock = sockpool[i] - myname = names[i] - STDERR.print "socket #{mysock} started, address #{myname}\n" - threads[i] = Thread.start do # Thread.start cannot be used here! - ls = mysock # copy to dynamic variable - t = Thread.current - STDERR.print "socket #{myname} listener started, pid #{$$} thread #{t}\n" - while true - as = ls.accept - Thread.start do - STDERR.print "socket #{myname} accepted, thread ", Thread.current, "\n" - s = as # copy to dynamic variable - str = '' - while line = s.gets - break if line == "\r\n" or line == "\n" - str << line - end - STDERR.print "socket #{myname} got string\n" - s.write("HTTP/1.0 200 OK\n") - s.write("Content-type: text/plain\n\n") - s.write("this is test: my name is #{myname}, you sent:\n") - s.write("---start\n") - s.write(str) - s.write("---end\n") - s.close - STDERR.print "socket #{myname} processed, thread ", Thread.current, " terminating\n" - end - end - end -end - -for t in threads - t.join -end |