如果您拨打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