public UnsignedInteger32 postReadRequest(byte[] handle, long offset, int len)
			throws SftpStatusException, SshException {
		try {
			UnsignedInteger32 requestId = nextRequestId();
			Packet msg = createPacket();
			msg.write(SSH_FXP_READ);
			msg.writeInt(requestId.longValue());
			msg.writeBinaryString(handle);
			msg.writeUINT64(offset);
			msg.writeInt(len);

			sendMessage(msg);

			return requestId;
		} catch (SshIOException ex) {
			throw ex.getRealException();
		} catch (IOException ex) {
			throw new SshException(ex);
		}

	}
public UnsignedInteger32 postReadRequest ( byte [ ] handle , long offset , int len ) throws SftpStatusException , SshException { try { UnsignedInteger32 requestId = nextRequestId ( ) ; Packet msg = createPacket ( ) ; msg . write ( SSH_FXP_READ ) ; msg . writeInt ( requestId . longValue ( ) ) ; msg . writeBinaryString ( handle ) ; msg . writeUINT64 ( offset ) ; msg . writeInt ( len ) ; sendMessage ( msg ) ; return requestId ; } catch ( SshIOException ex ) { throw ex . getRealException ( ) ; } catch ( IOException ex ) { throw new SshException ( ex ) ; } }
Post a read request to the server and return the request id; this is used
to optimize file downloads. In normal operation the files are transfered
by using a synchronous set of requests, however this slows the download
as the client has to wait for the servers response before sending another
request.

@param handle
@param offset
@param len
@return UnsignedInteger32
@throws SshException