Class: TCPServer
Class Method Summary collapse
- .freeport(from, to, remote = false) ⇒ Object
- .freeport_linux(from, to, remote) ⇒ Object
- .freeport_windows(from, to, remote) ⇒ Object
- .freeport_windows2(from, to, remote) ⇒ Object
- .usedports(from, to) ⇒ Object
Class Method Details
.freeport(from, to, remote = false) ⇒ Object
31 32 33 34 35 36 37 |
# File 'lib/rwd/net.rb', line 31 def self.freeport(from, to, remote=false) if windows? or cygwin? TCPServer.freeport_windows(from, to, remote) else TCPServer.freeport_linux(from, to, remote) end end |
.freeport_linux(from, to, remote) ⇒ Object
39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/rwd/net.rb', line 39 def self.freeport_linux(from, to, remote) ports = (from..to).to_a port = nil res = nil while res.nil? and not ports.empty? begin port = ports[0] ports.delete(port) io = TCPServer.new(remote ? "0.0.0.0" : "localhost", port) res = [port, io] rescue end end res = [nil, nil] if res.nil? port, io = res return port, io end |
.freeport_windows(from, to, remote) ⇒ Object
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'lib/rwd/net.rb', line 63 def self.freeport_windows(from, to, remote) ports = (from..to).to_a port = nil res = nil while res.nil? and not ports.empty? begin port = ports.any ports.delete(port) io = TCPSocket.new("localhost", port) io.close rescue res = port end end port, io = res return port, io end |
.freeport_windows2(from, to, remote) ⇒ Object
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/rwd/net.rb', line 85 def self.freeport_windows2(from, to, remote) res = nil port = from while res.nil? and port <= to begin io = TCPSocket.new("localhost", port) io.close port += 1 rescue res = port end end return res end |
.usedports(from, to) ⇒ Object
103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/rwd/net.rb', line 103 def self.usedports(from, to) threads = [] res = [] from.upto(to) do |port| threads << Thread.new do begin io = TCPSocket.new("localhost", port) io.close port rescue nil end end end threads.each do |thread| port = thread.value res << port unless port.nil? end return res end |