Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- require 'net/ssh/buffered_io'
- require 'socket'
- server = TCPServer.new("localhost", 1234);
- server.extend(Net::SSH::BufferedIo)
- sockets = [server]
- loop do
- readers, writers, = IO.select(sockets, sockets, nil, 1)
- next if readers.nil?
- readers.each do |reader|
- if reader == server
- client = server.accept
- client.extend(Net::SSH::BufferedIo)
- sockets << client
- puts "[#{client.object_id}] client connected"
- elsif reader.fill.zero?
- if reader.available > 0
- puts "[#{reader.object_id}] #{reader.read_available.inspect}"
- end
- puts "[#{reader.object_id}] client closed"
- sockets.delete(reader)
- writers.delete(reader)
- else
- if reader.available >= 30
- data = reader.read_available
- puts "[#{reader.object_id}] #{data.inspect}"
- reader.enqueue("[#{data.length}]")
- end
- end
- end
- writers.each do |writer|
- writer.send_pending
- end
- end
Add Comment
Please, Sign In to add comment