Próbuję utworzyć serwer HTTP jednorazowy do obsługi pojedynczego wywołania zwrotnego i potrzebuję pomocy w znalezieniu wolnego portu TCP w Ruby.Jak znaleźć wolny port serwera TCP za pomocą Ruby?
To jest szkielet, co robię:
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
(To echa standardowe wejście do pierwszego połączenia, a następnie umiera.)
Jak mogę automatycznie znajdzie wolny port słuchać na?
To wydaje się być jedynym sposobem, aby rozpocząć pracę na zdalnym serwerze, który następnie oddzwania z unikalnym ID pracy. Ten identyfikator pracy może być następnie zapytany o informacje o stanie. Dlaczego oryginalni projektanci nie mogli po prostu zwrócić identyfikatora zadania podczas planowania pracy, której nigdy nie poznam. Nie można użyć pojedynczego portu, ponieważ mogą wystąpić konflikty z wieloma wywołaniami zwrotnymi; w ten sposób porty są używane tylko przez 5 sekund.
Zobacz (nowy) ostatni akapit pytania. –
To nie powinna być akceptowana odpowiedź; patrz http://stackoverflow.com/a/201528/3528 poniżej. –