ip_address_list v0.1.1
Crystal IP Address List Library
This library provides functionality to retrieve the IP addresses (both IPv4 and IPv6) associated with the network interfaces on a system. It is a port of Ruby's ip_address_list
method from the Socket
class.
Features
- Retrieve both IPv4 and IPv6 addresses from network interfaces.
- Supports Windows, Linux, and macOS.
- Easy-to-use interface, returning a list of
Socket::IPAddress
objects.
Installation
-
Add the dependency to your
shard.yml
:dependencies: ip_address_list: github: mamantoha/ip_address_list
-
Run
shards install
Usage
require "ip_address_list"
p! Socket.ip_address_list
# => [Socket::IPAddress(127.0.0.1:0),
# Socket::IPAddress(192.168.31.229:0),
# Socket::IPAddress(172.17.0.1:0),
# Socket::IPAddress([::1]:0),
# Socket::IPAddress([fdcc:60fc:349d:2fcf:7e6:1635:e1a7:1fb6]:0),
# Socket::IPAddress([fe80::c8e3:857d:43c8:cec3]:0)
# ...]
Technical Notes
Windows Implementation
On Windows, this library uses the GetAdaptersAddresses
function to retrieve network interface information, including IP addresses. You can find more information about GetAdaptersAddresses
in the Microsoft documentation.
Linux and macOS Implementation
On Linux and macOS, the library uses the getifaddrs
function to gather network interface information. This function is part of the standard C library and provides a linked list of structures describing the network interfaces of the local system. More details about getifaddrs
can be found in the Linux man page and the macOS documentation.
Contributing
- Fork it (https://github.com/mamantoha/ip_address_list/fork)
- Create your feature branch (
git checkout -b my-new-feature
) - Commit your changes (
git commit -am 'Add some feature'
) - Push to the branch (
git push origin my-new-feature
) - Create a new Pull Request
Contributors
- Anton Maminov - creator and maintainer
ip_address_list
- 1
- 0
- 0
- 2
- 0
- 8 days ago
- September 17, 2024
MIT License
Thu, 21 Nov 2024 06:44:25 GMT