Inet_aton / inet_ntoa

Hi guys,

i have a big problem with ruby + inet_aton.
Since IPAddr has the to_i function it can convert IPAddrs to integers (inet_aton). But i didn't find any function that reverses this (inet_ntoa).. And without such a function, i can't work =)

Any ideas?

thanks!

···

--

Mit freundlichen Grüßen / best regards

Franz Bettag

____________________________
QS Housing
Franz Bettag
Ludwigstr. 45-47
90402 Nürnberg
http://www.qs-housing.net

Tel: +49 1805 737376 664
Fax: +49 1805 737376 665

maybe this will work

     harp:~ > cat a.rb
     def inet_aton ip
       ip.split(/\./).map{|c| c.to_i}.pack("C*").unpack("N").first
     end
     def inet_ntoa n
       [n].pack("N").unpack("C*").join "."
     end

     ip = "255.127.63.31"
     n = inet_aton ip

     puts n
     puts n.to_s(2)

     a = inet_ntoa n
     puts a

     puts(inet_ntoa(inet_aton(ip)))

     harp:~ > ruby a.rb
     4286529311
     11111111011111110011111100011111
     255.127.63.31

i can't remember if that's exactly how those work - but i thinks that's right.

hth.

-a

···

On Thu, 16 Mar 2006, Franz Bettag wrote:

Hi guys,

i have a big problem with ruby + inet_aton. Since IPAddr has the to_i
function it can convert IPAddrs to integers (inet_aton). But i didn't find
any function that reverses this (inet_ntoa).. And without such a function,
i can't work =)

Any ideas?

thanks!

--
share your knowledge. it's a way to achieve immortality.
- h.h. the 14th dali lama

require "ipaddr"

IPAddr.new("192.168.42.21").to_i
=> 3232246293
IPAddr.new(3232246293, Socket::AF_INET).to_s
=> "192.168.42.21"

Same works for Socket::AF_INET6.

Additionally you can do:

IPAddr.new_ntoh([ 3232246293 ].pack("N"))
=> #<IPAddr: IPv4:192.168.42.21/255.255.255.255>

IPAddr::new_ntoh creates a new ipaddr containing the given network byte
ordered string form of an IP address.

···

On Thu, Mar 16, 2006 at 08:38:46AM +0900, Franz Bettag wrote:

Hi guys,

i have a big problem with ruby + inet_aton.
Since IPAddr has the to_i function it can convert IPAddrs to integers
(inet_aton). But i didn't find any function that reverses this
(inet_ntoa).. And without such a function, i can't work =)

Any ideas?

--
:wq Claudio

Thanks to both of you! :slight_smile:

Claudio Jeker schrieb:

···

On Thu, Mar 16, 2006 at 08:38:46AM +0900, Franz Bettag wrote:

Hi guys,

i have a big problem with ruby + inet_aton.
Since IPAddr has the to_i function it can convert IPAddrs to integers (inet_aton). But i didn't find any function that reverses this (inet_ntoa).. And without such a function, i can't work =)

Any ideas?

require "ipaddr"

IPAddr.new("192.168.42.21").to_i
=> 3232246293
IPAddr.new(3232246293, Socket::AF_INET).to_s
=> "192.168.42.21"

Same works for Socket::AF_INET6.

Additionally you can do:

IPAddr.new_ntoh([ 3232246293 ].pack("N"))
=> #<IPAddr: IPv4:192.168.42.21/255.255.255.255>

IPAddr::new_ntoh creates a new ipaddr containing the given network byte
ordered string form of an IP address.

--

Mit freundlichen Grüßen

Franz Bettag

____________________________
QS Housing
Franz Bettag
Ludwigstr. 45-47
90402 Nürnberg
http://www.qs-housing.net

Tel: +49 1805 737376 664
Fax: +49 1805 737376 665