Ich versuche, einen Einmal-HTTP-Server zu erstellen, um einen einzelnen Rückruf zu verarbeiten, und brauche Hilfe bei der Suche nach einem freien TCP-Port in Ruby. Wie finden Sie einen freien TCP-Server-Port mit Ruby?
Dies ist das Skelett, was ich tue:
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
(Es spiegelt die Standardeingabe in der ersten Verbindung und dann stirbt.)
Wie kann ich automatisch einen freien Port finden hören auf?
Dies scheint die einzige Möglichkeit zu sein, einen Job auf einem Remote-Server zu starten, der dann mit einer eindeutigen Job-ID zurückruft. Diese Job-ID kann dann nach Statusinformationen abgefragt werden. Warum konnten die ursprünglichen Designer nicht einfach die Job-ID zurückgeben, wenn sie den Job planen, den ich nie erfahren werde. Ein einzelner Port kann nicht verwendet werden, da Konflikte mit mehreren Callbacks auftreten können. Auf diese Weise werden die Ports nur für + - 5 Sekunden verwendet.
Siehe (neuen) letzten Absatz der Frage. –
Dies sollte nicht die akzeptierte Antwort sein; siehe http://stackoverflow.com/a/201528/3528 unten. –