A comprehensive utility library for Light-4J microservices framework providing string manipulation, networking, I/O, security, and configuration utilities.
—
Network utilities for IP address handling, port management, and network validation. These utilities provide comprehensive networking support for microservices, including local address detection, hostname resolution, and URL formatting for both IPv4 and IPv6 environments.
Comprehensive network operations for IP address handling, validation, and network discovery.
/**
* Network utilities for IP address handling and validation
*/
public class NetUtils {
public static final String LOCALHOST = "127.0.0.1";
public static final String ANYHOST = "0.0.0.0";
// Host validation
public static boolean isInvalidLocalHost(String host);
public static boolean isValidLocalHost(String host);
public static boolean isValidAddress(String address);
public static boolean isValidAddress(InetAddress address);
// Local address discovery
public static InetAddress getLocalAddress();
public static InetAddress getLocalAddress(Map<String, Integer> destHostPorts);
public static String getLocalAddressByDatagram();
// Network operations
public static String getHostName(SocketAddress socketAddress);
public static int getAvailablePort();
// URL formatting
public static String hostAndPortToUrlString(String host, int port);
public static String ipAddressAndPortToUrlString(InetAddress address, int port);
public static String ipAddressToUrlString(InetAddress address);
// DNS resolution
public static String resolveHost2Address(String fqdn);
public static URI resolveUriHost2Address(URI uri);
}Usage Examples:
import com.networknt.utility.NetUtils;
import java.net.InetAddress;
import java.net.URI;
// Local address discovery
InetAddress localAddr = NetUtils.getLocalAddress();
String localIP = NetUtils.getLocalAddressByDatagram();
// Host validation
boolean isValid = NetUtils.isValidLocalHost("192.168.1.100"); // true
boolean isInvalid = NetUtils.isInvalidLocalHost("0.0.0.0"); // true
// Port management
int availablePort = NetUtils.getAvailablePort(); // e.g., 8080
// URL formatting
String url = NetUtils.hostAndPortToUrlString("localhost", 8080); // "localhost:8080"
String ipUrl = NetUtils.ipAddressToUrlString(InetAddress.getByName("192.168.1.1")); // "192.168.1.1"
// IPv6 handling
InetAddress ipv6 = InetAddress.getByName("2001:db8::1");
String ipv6Url = NetUtils.ipAddressToUrlString(ipv6); // "[2001:db8::1]"
// DNS resolution
String resolved = NetUtils.resolveHost2Address("example.com"); // "93.184.216.34"
URI resolvedUri = NetUtils.resolveUriHost2Address(URI.create("http://example.com/path"));
// Advanced local address detection with destination mapping
Map<String, Integer> destinations = Map.of(
"api.service.com", 443,
"db.service.com", 5432
);
InetAddress bestLocal = NetUtils.getLocalAddress(destinations);Microservice Discovery:
// Find best local interface for service registration
InetAddress serviceAddr = NetUtils.getLocalAddress();
int servicePort = NetUtils.getAvailablePort();
String serviceUrl = NetUtils.ipAddressAndPortToUrlString(serviceAddr, servicePort);Load Balancer Health Checks:
// Validate health check source addresses
boolean isValidSource = NetUtils.isValidAddress("10.0.1.50");
String sourceName = NetUtils.getHostName(socketAddress);Service Configuration:
// Resolve configuration hostnames to IP addresses
String dbHost = "database.internal.com";
String dbIp = NetUtils.resolveHost2Address(dbHost);
String connectionUrl = "jdbc:postgresql://" + dbIp + ":5432/mydb";IPv6 Support:
// Handle both IPv4 and IPv6 addresses in URL construction
InetAddress address = InetAddress.getByName(hostString);
String urlSafeAddress = NetUtils.ipAddressToUrlString(address);
// IPv4: "192.168.1.1" -> "192.168.1.1"
// IPv6: "2001:db8::1" -> "[2001:db8::1]"Install with Tessl CLI
npx tessl i tessl/maven-com-networknt--utility