Skip to content

Instantly share code, notes, and snippets.

@danvideo
Forked from TeWu/gist:1234573
Created December 26, 2016 10:11
Show Gist options
  • Save danvideo/47cf9e6fd3ec68faa77507bface41549 to your computer and use it in GitHub Desktop.
Save danvideo/47cf9e6fd3ec68faa77507bface41549 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