/** * Accept client connections on server socket fd. Blocks until a client connects. * * @param fd open server socket. See {@link #openServer}. * @return a native handle to the network connection. * @throws IOException */ public int accept(int fd) throws IOException { VMThread.getSystemEvents().waitForReadEvent(fd); Socket.sockaddr_in remote_sin = new Socket.sockaddr_in(); IntByReference address_len = new IntByReference(4); int newSocket = sockets.accept(fd, remote_sin, address_len); if (newSocket < 0) { throw newError(fd, "accept"); } address_len.free(); set_blocking_flags(newSocket, /*is_blocking*/ false); // we could read info about client from remote_sin, but don't need to. return newSocket; }