shosei

Untitled

Feb 24th, 2012
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 1.37 KB | None | 0 0
  1. Convert Milliseconds into Hours, Minutes and Seconds String
  2.  
  3.  
  4. def convertMillisecondsIntoAHoursMinutesAndSecondsString( millis)
  5.   seconds = millis % 60
  6.   minutes = (millis / 60 ) % 60
  7.   hours = (millis / 3600) % 24
  8.  
  9.   ret = ""
  10.   ret = ret + hours.to_s + "t " if hours >= 1
  11.   ret = ret + minutes.to_s + "m " if minutes >= 1
  12.   ret = ret + seconds.to_s + "s " if seconds > 0
  13.   return ret
  14. end
  15.  
  16. Echo server
  17.  
  18.  
  19. require 'socket'
  20.  
  21. class ClientQuitError < RuntimeError; end
  22.  
  23. port = ARGV.shift || 0 # default is to use the next available port
  24. host = ARGV.shift # default is to bind everything
  25.  
  26. server = host ? TCPServer.open(host, port) : TCPServer.open(port)
  27.  
  28. port = server.addr[1]
  29. addrs = server.addr[2..-1].uniq
  30.  
  31. puts "*** listening on #{addrs.collect{|a|"#{a}:#{port}"}.join(' ')}"
  32.  
  33. loop do
  34.   socket = server.accept
  35.  
  36.   Thread.start do # one thread per client
  37.     s = socket
  38.  
  39.     port = s.peeraddr[1]
  40.     name = s.peeraddr[2]
  41.     addr = s.peeraddr[3]
  42.  
  43.     puts "*** recieving from #{name}:#{port}"
  44.  
  45.     begin
  46.       while line = s.gets # read a line at a time
  47.         raise ClientQuitError if line =~ /^die\r?$/
  48.         puts "#{addr} [#{Time.now}]: #{line}"
  49.       end
  50.  
  51.     rescue ClientQuitError
  52.       puts "*** #{name}:#{port} disconnected"
  53.  
  54.     ensure
  55.       s.close # close socket on error
  56.     end
  57.  
  58.     puts "*** done with #{name}:#{port}"
  59.   end
  60.  
  61. end
Advertisement
Add Comment
Please, Sign In to add comment