code: public static ZFrame recvFrame(Socket socket, int flags)
      {
          ZFrame f = new ZFrame();
          byte[] data = f.recv(socket, flags);
          if (data == null) {
              return null;
          }
          return f;
      }
docs: Receive a new frame off the socket, Returns newly-allocated frame, or
  null if there was no input waiting, or if the read was interrupted.
  @param   socket
  Socket to read from
  @param   flags
  Pass flags to 0MQ socket.recv call
  @return
  received frame, else null