Echo server: Difference between revisions
Content added Content deleted
(Add REBOL to the list) |
(→{{header|Ruby}}: rewrite) |
||
Line 765: | Line 765: | ||
=={{header|Ruby}}== |
=={{header|Ruby}}== |
||
<lang ruby>require 'socket' |
<lang ruby>require 'socket' |
||
⚫ | |||
while (connection = server.accept) |
|||
⚫ | |||
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) |
|||
conn.puts(line) |
|||
end |
|||
rescue EOFError |
|||
conn.close |
|||
puts "#{client} has disconnected" |
|||
puts("Disconnected: #{client_host}:#{client_port}") |
|||
⚫ | |||
} |
|||
end |
|||
end #connection |
|||
while true |
|||
if(newSocket = @socket.accept) |
|||
connection(newSocket) |
|||
⚫ | |||
end</lang> |
end</lang> |
||