0

一部のシステムでは、次のようにしてIPアドレス(192.68.mn形式)を取得できます。

addr = IPSocket::getAddress(Socket.gethostname())

...問題は、ローカルマシンがそれ自体に使用する名前が、DNSサーバーがそれに関連付ける名前である場合にのみ機能することです。

ルビーがプライマリインターフェイスのIPアドレスを返すのはどのように難しいのでしょうか?プラットフォームに依存しない方法でこれを行う必要があります。そうでない場合は、ifconfigまたはipconfigを呼び出して解析します。

4

2 に答える 2

4

この質問を参照してください。またsee Socket.getaddrinfo()

于 2008-12-18T22:30:04.813 に答える
0

これはどう

require 'socket'
ipaddr = UDPSocket.open {|s| s.connect('65.59.196.211'); s.addr.last }

IPアドレスは実際のものであれば何でもかまいませんが(これはstackoverflow.comで取得したものです)、IPアドレスを取得したいインターフェースで到達可能なIPアドレスである必要があります。これは UDP ソケットであるため、実際には接続は試行されませんが、使用するインターフェイスを見つけようとします。

于 2010-04-23T21:44:45.997 に答える