Skip to content

Instantly share code, notes, and snippets.

@qubitrenegade
Forked from TeWu/gist:1234573
Created September 21, 2019 03:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save qubitrenegade/06da3bae5d09ccadc4522b1162790c21 to your computer and use it in GitHub Desktop.
Save qubitrenegade/06da3bae5d09ccadc4522b1162790c21 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