NetUtils for Swift
Swift library that simplifies getting information about your network interfaces and their properties, both for iOS, macOS and Linux.
This library is a wrapper around the BSD APIs like
getifaddrs, to make it easy to use them from Swift.
Recommended way of integrating this library on macOS or iOS is using CocoaPods: https://cocoapods.org/pods/NetUtils. On Linux I recommend using the Swift Package Manager.
This library works with both Swift 3 and Swift 4.
Some system APIs you can simply use from Swift, but others you cannot. The difference is that some are made available as a module, and some are not. The APIs around network interfaces are not exposed as a module, which means that you cannot use them from Swift without defining a module for them yourself. I documented this problem extensively over here: https://ind.ie/labs/blog/using-system-headers-in-swift.
This library can be installed via CocoaPods, Carthage and Swift Package Manager.
This module contains only one class:
Interface. This class represents a network interface. It has a static method
to list all interfaces, somewhat surprisingly called
allInterfaces(). This will return an array of
objects, which contain properties like their IP address, family, whether they are up and running, etc.
Please note that both IPv4 and IPv6 interfaces are supported.
This project is released under the MIT license.