Skip to content

Instantly share code, notes, and snippets.

@mraaroncruz
Forked from TeWu/gist:1234573
Created June 18, 2018 14:24
Show Gist options
  • Save mraaroncruz/b3f4546bcba45130496d62587b46f62b to your computer and use it in GitHub Desktop.
Save mraaroncruz/b3f4546bcba45130496d62587b46f62b to your computer and use it in GitHub Desktop.
TCP client and multithreaded server in 14 lines of Ruby code

TCP client and multithreaded server in 14 lines of Ruby code

Server:

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:

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:

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:

require "socket"
s = TCPSocket.open("localhost", 2626)
while line = s.gets do puts "received : #{line.chop}" end
s.close
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment