How To Get The Public Ip Address Of Current Host
Join the DZone community and get the full member experience.Join For Free
In a virtual host, or when your application could run on a multiple type of OS, it could be difficult to get the IP address corresponding to your default gateway. Here a solution, which should be 'universal'. This snippets try to send a datagramme on a distant host (no matter if datagrame arrive), and retrieve the local IP with the return-value of the connect :
Socket.do_not_reverse_lookup=true def get_public_ip() UDPSocket.open do |s| s.connect '126.96.36.199', 1 # wikipedia, connection don't need to be effective s.addr.last end endThis option must be positionned :
Socket.do_not_reverse_lookup=trueIf not, your ruby machine will try to find DNS name of wikipedia, which could take a very long time if host is isolated.