如果您撥打DRb.start_service(nil, some_obj)
,然後撥打DRb.uri
,您將獲得本地URI(包括端口號),以便另一個進程可用來撥打電話。如何在Ruby中找到隨機打開的端口?
我正在尋找只是有一些代碼找到一個隨機可用端口並返回該端口號,而不是啓動一個成熟的DRb
服務。有沒有一種簡單的方法來在Ruby中做到這一點?
如果您撥打DRb.start_service(nil, some_obj)
,然後撥打DRb.uri
,您將獲得本地URI(包括端口號),以便另一個進程可用來撥打電話。如何在Ruby中找到隨機打開的端口?
我正在尋找只是有一些代碼找到一個隨機可用端口並返回該端口號,而不是啓動一個成熟的DRb
服務。有沒有一種簡單的方法來在Ruby中做到這一點?
還沒有嘗試過,但這可能工作。
的方法可以讓系統 自動分配的端口。對於
互聯網域和XNS 域,在調用bind()之前指定端口號爲 0要求 系統執行此操作。
另見http://www.ruby-doc.org/stdlib/libdoc/socket/rdoc/classes/Socket.html#M003723
require 'socket'
# use Addrinfo
socket = Socket.new(:INET, :STREAM, 0)
socket.bind(Addrinfo.tcp("127.0.0.1", 0))
p socket.local_address #=> #<Addrinfo: 127.0.0.1:2222 TCP>
注意在socket.bind呼叫使用端口0。預期的行爲是local_address將包含隨機打開的端口。
這應該是公認的答案!謝謝。我確實需要什麼。 – Trevoke 2012-02-13 16:58:39
建議!這在'rbx-2.5.2'下不起作用......'Addrinfo'無處可尋。 – digitalextremist 2015-06-06 03:25:34
你應該將答案標記爲接受.. :) – Trevoke 2012-02-13 16:58:30