From fcbf63e62c627deae76c1b8cb8c0876c536ed811 Mon Sep 17 00:00:00 2001 From: Jari Vetoniemi Date: Mon, 16 Mar 2020 18:49:26 +0900 Subject: Fresh start --- jni/ruby/sample/svr.rb | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 jni/ruby/sample/svr.rb (limited to 'jni/ruby/sample/svr.rb') diff --git a/jni/ruby/sample/svr.rb b/jni/ruby/sample/svr.rb new file mode 100644 index 0000000..eb49ccf --- /dev/null +++ b/jni/ruby/sample/svr.rb @@ -0,0 +1,34 @@ +# socket example - server side +# usage: ruby svr.rb + +# this server might be blocked by an ill-behaved client. +# see tsvr.rb which is safe from client blocking. + +require "socket" + +gs = TCPServer.open(0) +addr = gs.addr +addr.shift +printf("server is on %s\n", addr.join(":")) +socks = [gs] + +loop do + nsock = select(socks); + next if nsock == nil + for s in nsock[0] + if s == gs + ns = s.accept + socks.push(ns) + print(s, " is accepted\n") + else + if s.eof? + print(s, " is gone\n") + s.close + socks.delete(s) + # single thread gets may block whole service + elsif str = s.gets + s.write(str) + end + end + end +end -- cgit v1.2.3