int hostlen = receive(nfd.getNativeFD(), dst, hostPort);
int hostlen = VmChannel.receive(nfd.getNativeFD(), dst, hostPort);
  public SocketAddress receive(ByteBuffer dst) throws IOException  {    if (kind != Kind.SOCK_DGRAM)      throw new SocketException("not a datagram socket");    ByteBuffer hostPort = ByteBuffer.allocateDirect(18);    int hostlen = receive(nfd.getNativeFD(), dst, hostPort);    if (hostlen == 0)      return null;    if (hostlen == 4) // IPv4      {        byte[] addr = new byte[4];        hostPort.get(addr);        int port = hostPort.getShort() & 0xFFFF;        return new InetSocketAddress(Inet4Address.getByAddress(addr), port);      }    if (hostlen == 16) // IPv6      {        byte[] addr = new byte[16];        hostPort.get(addr);        int port = hostPort.getShort() & 0xFFFF;        return new InetSocketAddress(Inet6Address.getByAddress(addr), port);      }        throw new SocketException("host address received with invalid length: "                              + hostlen);  }