# TCP client and multithreaded server in 14 lines of Ruby code ### Server: ``` ruby require "socket" server = TCPServer.open(2626) loop do Thread.fork(server.accept) do |client| client.puts("Hello, I'm Ruby TCP server", "I'm disconnecting, bye :*") client.close end end ``` ### Client: ``` ruby require "socket" s = TCPSocket.open("localhost", 2626) while line = s.gets puts "received : #{line.chop}" end s.close ``` ## .. but can be minified to 7 lines without using instruction terminator ";" .. just 4 fun ;) ### Server: ``` ruby require "socket" server = TCPServer.open(2626) loop { Thread.fork(server.accept) { |client| client.puts("Hello, I'm Ruby TCP server", "I'm disconnecting, bye :*") or client.close }} ``` ### Client: ``` ruby require "socket" s = TCPSocket.open("localhost", 2626) while line = s.gets do puts "received : #{line.chop}" end s.close ```