Skip to content

Instantly share code, notes, and snippets.

@plvhx
Created May 1, 2025 12:05
Show Gist options
  • Save plvhx/7ec3f6025fb1664c558ce20313c8788b to your computer and use it in GitHub Desktop.
Save plvhx/7ec3f6025fb1664c558ce20313c8788b to your computer and use it in GitHub Desktop.
Simple TCP server using Ruby
require 'socket'
require 'thread'
socket = Socket.new Socket::AF_INET, Socket::SOCK_STREAM, Socket::IPPROTO_TCP
socket.setsockopt :SOCKET, :REUSEADDR, 1
socket.bind Addrinfo.tcp('0.0.0.0', 31338)
socket.listen 0
puts "Listen on 0.0.0.0 port 31338"
loop do
client = socket.accept
puts "Client connected from #{client[1].inspect}"
Thread.start(client) do |c|
begin
loop do
data = c[0].gets&.chomp
if data.nil?
puts "Client disconnected."
break
end
puts "Received: #{data}"
c[0].puts "#{data}"
end
rescue IOError => e
puts "Error: #{e.to_s}"
ensure
c[0].close
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment