formatIPAddress method

String formatIPAddress(
  1. Pointer<SOCKADDR> addr
)

Implementation

String formatIPAddress(Pointer<SOCKADDR> addr) {
  final buffer = calloc<BYTE>(64).cast<Utf8>();
  try {
    if (addr.ref.sa_family == AF_INET) {
      final sinAddr = addr.cast<SOCKADDR_IN>().ref.sin_addr;
      final sinAddrPtr = calloc<Int32>();
      sinAddrPtr.value = sinAddr;
      inet_ntop(AF_INET, sinAddrPtr, buffer, 64);
      free(sinAddrPtr);
    } else if (addr.ref.sa_family == AF_INET6) {
      final sinAddr = addr.cast<SOCKADDR_IN6>().ref.sin6_addr;
      final sinAddrPtr = calloc<Uint8>(16);
      for (var i = 0; i < 16; i++) {
        sinAddrPtr[i] = sinAddr[i];
      }
      inet_ntop(AF_INET6, sinAddrPtr, buffer, 64);
      free(sinAddrPtr);
    }
    return buffer.cast<Utf8>().toDartString();
  } finally {
    free(buffer);
  }
}