Tamir.SharpSsh.jsch.RequestSftp.request C# (CSharp) Method

request() public method

public request ( Session session, Channel channel ) : void
session Session
channel Channel
return void
		public void request(Session session, Channel channel)
		{
			Buffer buf=new Buffer();
			Packet packet=new Packet(buf);

			bool reply=waitForReply();
			if(reply)
			{
				channel.reply=-1;
			}

			packet.reset();
			buf.WriteByte((byte)Session.SSH_MSG_CHANNEL_REQUEST);
			buf.WriteInt(channel.getRecipient());
			buf.WriteString(Util.getBytes("subsystem"));
			buf.WriteByte((byte)(waitForReply() ? 1 : 0));
			buf.WriteString(Util.getBytes("sftp"));
			session.write(packet);

			if(reply)
			{
				while(channel.reply==-1)
				{
					try{System.Threading.Thread.Sleep(10);}
					catch//(Exception ee)
					{
					}
				}
				if(channel.reply==0)
				{
					throw new JSchException("failed to send sftp request");
				}
			}
		}
		public bool waitForReply(){ return true; }

Usage Example

        public override void start()
        { //throws JSchException{
            try
            {
                PipedOutputStream pos = new PipedOutputStream();
                io.setOutputStream(pos);
                PipedInputStream pis = new MyPipedInputStream(pos, 32 * 1024);
                io.setInputStream(pis);

                Request request = new RequestSftp();
                request.request(session, this);

                /*
                 *    System.err.println("lmpsize: "+lmpsize);
                 *    System.err.println("lwsize: "+lwsize);
                 *    System.err.println("rmpsize: "+rmpsize);
                 *    System.err.println("rwsize: "+rwsize);
                 */

                buf    = new Buffer(rmpsize);
                packet = new Packet(buf);
                int    i = 0;
                int    length;
                int    type;
                byte[] str;

                // send SSH_FXP_INIT
                sendINIT();

                // receive SSH_FXP_VERSION
                Header _header = new Header();
                _header = ReadHeader(buf, _header);
                length  = _header.length;
                if (length > MAX_MSG_LENGTH)
                {
                    throw new SftpException(SSH_FX_FAILURE, "Received message is too long: " + length);
                }
                type          = _header.type;    // 2 -> SSH_FXP_VERSION
                ServerVersion = _header.rid;
                skip(length);
                //System.err.println("SFTP protocol server-version="+server_version);
                //System.Console.WriteLine("server_version="+server_version+", type="+type+", length="+length+", i="+i);

                // send SSH_FXP_REALPATH
                sendREALPATH(".");

                // receive SSH_FXP_NAME
                _header = ReadHeader(buf, _header);
                length  = _header.length;
                type    = _header.type;         // 104 -> SSH_FXP_NAME
                buf.Rewind();
                fill(buf.buffer, 0, length);
                i = buf.ReadInt();              // count
                //System.Console.WriteLine("type="+type+", length="+length+", i="+i);
                str = buf.ReadString();         // filename
                //System.Console.WriteLine("str.length="+str.Length);
                home = cwd = Encoding.UTF8.GetString(str);
                str  = buf.ReadString();        // logname
                //    SftpATTRS.getATTR(buf);      // attrs

                lcwd = System.IO.Path.GetFullPath(".");
            }
            catch (Exception e)
            {
                //System.out.println(e);
                //System.Console.WriteLine(e);
                if (e is JSchException)
                {
                    throw (JSchException)e;
                }
                throw new JSchException(e.ToString());
            }
        }
All Usage Examples Of Tamir.SharpSsh.jsch.RequestSftp::request