Estoy tratando de crear un servidor HTTP de uso único para manejar una única devolución de llamada y necesito ayuda para encontrar un puerto TCP libre en Ruby.¿Cómo se puede encontrar un puerto de servidor TCP gratuito usando Ruby?
Este es el esqueleto de lo que estoy haciendo:
require 'socket'
t = STDIN.read
port = 8081
while s = TCPServer.new('127.0.0.1', port).accept
puts s.gets
s.print "HTTP/1.1 200/OK\rContent-type: text/plain\r\n\r\n" + t
s.close
exit
end
(Se hace eco de la entrada estándar a la primera conexión y después muere.)
¿Cómo puedo encontrar automáticamente un puerto libre para escuchar ¿en?
Esta parece ser la única forma de iniciar un trabajo en un servidor remoto que luego devuelve la llamada con una identificación de trabajo única. Esta ID de trabajo puede consultarse para obtener información de estado. Por qué los diseñadores originales no pudieron simplemente devolver la identificación del trabajo al programar el trabajo, nunca lo sabré. No se puede usar un solo puerto porque pueden producirse conflictos con múltiples devoluciones de llamada; de esta forma, los puertos solo se usan durante + - 5 segundos.
Consulte el (nuevo) último párrafo de la pregunta. –
Esta no debería ser la respuesta aceptada; ver http://stackoverflow.com/a/201528/3528 a continuación. –