Echo server: Difference between revisions

Content added Content deleted
(Add REBOL to the list)
Line 765: Line 765:
=={{header|Ruby}}==
=={{header|Ruby}}==
<lang ruby>require 'socket'
<lang ruby>require 'socket'
server = TCPServer.new(12321)


while (connection = server.accept)
@socket = TCPServer.new("", 12321)
Thread.new(connection) do |conn|
@socket.setsockopt( Socket::SOL_SOCKET, Socket::SO_REUSEADDR, 1 )
port, host = conn.peeraddr[1,2]

client = "#{host}:#{port}"
def connection(session)
puts "#{client} is connected"
Thread.new {
begin
client_port, client_host = session.peeraddr[1..2]
loop do
puts("Connected: #{client_host}:#{client_port}")
line = conn.readline
puts "#{client} says: #{line}"
while(msg = session.gets)
session.puts(msg)
conn.puts(line)
end
end
rescue EOFError
session.close
conn.close
puts "#{client} has disconnected"
puts("Disconnected: #{client_host}:#{client_port}")
end
}
end
end #connection

while true
if(newSocket = @socket.accept)
connection(newSocket)
end
end</lang>
end</lang>