Guest User

Untitled

a guest
Feb 19th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.96 KB | None | 0 0
  1. require 'net/ssh/buffered_io'
  2. require 'socket'
  3.  
  4. server = TCPServer.new("localhost", 1234);
  5. server.extend(Net::SSH::BufferedIo)
  6.  
  7. sockets = [server]
  8.  
  9. loop do
  10. readers, writers, = IO.select(sockets, sockets, nil, 1)
  11. next if readers.nil?
  12.  
  13. readers.each do |reader|
  14. if reader == server
  15. client = server.accept
  16. client.extend(Net::SSH::BufferedIo)
  17. sockets << client
  18. puts "[#{client.object_id}] client connected"
  19. elsif reader.fill.zero?
  20. if reader.available > 0
  21. puts "[#{reader.object_id}] #{reader.read_available.inspect}"
  22. end
  23.  
  24. puts "[#{reader.object_id}] client closed"
  25. sockets.delete(reader)
  26. writers.delete(reader)
  27. else
  28. if reader.available >= 30
  29. data = reader.read_available
  30. puts "[#{reader.object_id}] #{data.inspect}"
  31. reader.enqueue("[#{data.length}]")
  32. end
  33. end
  34. end
  35.  
  36. writers.each do |writer|
  37. writer.send_pending
  38. end
  39. end
Add Comment
Please, Sign In to add comment