本文整理匯總了C#中Tamir.SharpSsh.jsch.Packet類的典型用法代碼示例。如果您正苦於以下問題:C# Packet類的具體用法?C# Packet怎麽用?C# Packet使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。
Packet類屬於Tamir.SharpSsh.jsch命名空間,在下文中一共展示了Packet類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: run
public void run()
{
Buffer buf=new Buffer(300); // ??
Packet packet=new Packet(buf);
thread=this;
try
{
ss.Start();
while(thread!=null)
{
Socket socket=ss.AcceptSocket();
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.NoDelay, 1);
NetworkStream ns = new NetworkStream(socket);
Stream ins= ns;
Stream outs=ns;
ChannelDirectTCPIP channel=new ChannelDirectTCPIP();
channel.init();
channel.setInputStream(ins);
channel.setOutputStream(outs);
session.addChannel(channel);
((ChannelDirectTCPIP)channel).setHost(host);
((ChannelDirectTCPIP)channel).setPort(rport);
((ChannelDirectTCPIP)channel).setOrgIPAddress( ((IPEndPoint)socket.RemoteEndPoint).Address.ToString() );
((ChannelDirectTCPIP)channel).setOrgPort(((IPEndPoint)socket.RemoteEndPoint).Port);
channel.connect();
if(channel.exitstatus!=-1)
{
}
}
}
catch
{
//System.out.println("! "+e);
}
}
示例2: run
public override void run()
{
// thread=Thread.currentThread();
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
int i=0;
try
{
while(isConnected() &&
thread!=null &&
io!=null &&
io.ins!=null)
{
i=io.ins.Read(buf.buffer, 14, buf.buffer.Length-14);
if(i==0)continue;
if(i==-1)
{
eof();
break;
}
if(_close)break;
packet.reset();
buf.putByte((byte)Session.SSH_MSG_CHANNEL_DATA);
buf.putInt(recipient);
buf.putInt(i);
buf.skip(i);
session.write(packet, this, i);
}
}
catch//(Exception e)
{
//System.out.println("ChannelShell.run: "+e);
}
thread=null;
}
示例3: request
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.putByte((byte)Session.SSH_MSG_CHANNEL_REQUEST);
buf.putInt(channel.getRecipient());
buf.putString(Util.getBytes("subsystem"));
buf.putByte((byte)(waitForReply() ? 1 : 0));
buf.putString(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");
}
}
}
示例4: request
public void request(Session session, Channel channel)
{
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
packet.reset();
buf.putByte((byte) Session.SSH_MSG_CHANNEL_REQUEST);
buf.putInt(channel.getRecipient());
buf.putString( Util.getBytes("signal"));
buf.putByte((byte)(waitForReply() ? 1 : 0));
buf.putString(Util.getBytes(signal));
session.write(packet);
}
示例5: run
public override void run()
{
//System.out.println(this+":run >");
/*
if(thread!=null){ return; }
thread=Thread.currentThread();
*/
// Buffer buf=new Buffer();
Buffer buf=new Buffer(rmpsize);
Packet packet=new Packet(buf);
int i=-1;
try
{
while(isConnected() &&
thread!=null &&
io!=null &&
io.ins!=null)
{
i=io.ins.Read(buf.buffer,
14,
buf.buffer.Length-14
-32 -20 // padding and mac
);
if(i==0)continue;
if(i==-1)
{
eof();
break;
}
if(_close)break;
packet.reset();
buf.WriteByte((byte)Session.SSH_MSG_CHANNEL_DATA);
buf.WriteInt(recipient);
buf.WriteInt(i);
buf.Skip(i);
session.write(packet, this, i);
}
}
catch(Exception e)
{
Console.WriteLine("# ChannelSession.run");
Console.WriteLine(e);
}
if(thread!=null)
{
//lock(thread){ System.Threading.Monitor.PulseAll(this);/*thread.notifyAll();*/ }
}
thread=null;
//System.out.println(this+":run <");
}
示例6: connect
public override void connect()
{
try
{
Buffer buf=new Buffer(150);
Packet packet=new Packet(buf);
// send
// byte SSH_MSG_CHANNEL_OPEN(90)
// string channel type //
// uint32 sender channel // 0
// uint32 initial window size // 0x100000(65536)
// uint32 maxmum packet size // 0x4000(16384)
packet.reset();
buf.putByte((byte)90);
buf.putString(Util.getBytes("direct-tcpip"));
buf.putInt(id);
buf.putInt(lwsize);
buf.putInt(lmpsize);
buf.putString(Util.getBytes(host));
buf.putInt(port);
buf.putString(Util.getBytes(originator_IP_address));
buf.putInt(originator_port);
session.write(packet);
try
{
while(this.getRecipient()==-1)
{
//Thread.sleep(500);
System.Threading.Thread.Sleep(10);
}
}
catch
{
}
if(this.eof_remote)
{ // failed to open
disconnect();
return;
}
thread=new Thread(new ThreadStart(this.run));
thread.Start();
}
catch
{
}
}
示例7: request
public void request(Session session, Channel channel)
{
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
// send
// byte SSH_MSG_CHANNEL_REQUEST(98)
// uint32 recipient channel
// string request type // "shell"
// boolean want reply // 0
packet.reset();
buf.putByte((byte) Session.SSH_MSG_CHANNEL_REQUEST);
buf.putInt(channel.getRecipient());
buf.putString(Util.getBytes("shell"));
buf.putByte((byte)(waitForReply() ? 1 : 0));
session.write(packet);
}
示例8: request
public void request(Session session, Channel channel)
{
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
packet.reset();
buf.WriteByte((byte) Session.SSH_MSG_CHANNEL_REQUEST);
buf.WriteInt(channel.getRecipient());
buf.WriteString(Util.getBytes("pty-req"));
buf.WriteByte((byte)(waitForReply() ? 1 : 0));
buf.WriteString(Util.getBytes("vt100"));
buf.WriteInt(80);
buf.WriteInt(24);
buf.WriteInt(640);
buf.WriteInt(480);
buf.WriteString(Util.getBytes(""));
session.write(packet);
}
示例9: connect
public virtual void connect()
{
if(!isConnected()){
throw new JSchException("session is down");
}
try{
Buffer buf=new Buffer(100);
Packet packet=new Packet(buf);
// send
// byte SSH_MSG_CHANNEL_OPEN(90)
// string channel type //
// uint32 sender channel // 0
// uint32 initial window size // 0x100000(65536)
// uint32 maxmum packet size // 0x4000(16384)
packet.reset();
buf.putByte((byte)90);
buf.putString(this.type);
buf.putInt(this.id);
buf.putInt(this.lwsize);
buf.putInt(this.lmpsize);
session.write(packet);
int retry=1000;
while(this.getRecipient()==-1 &&
session.IsConnected() &&
retry>0){
try{System.Threading.Thread.Sleep(50);}catch{}
retry--;
}
if(!session.IsConnected()){
throw new JSchException("session is down");
}
if(retry==0){
throw new JSchException("channel is not opened.");
}
start();
}
catch(Exception e){
if(e is JSchException) throw (JSchException)e;
}
}
示例10: request
public void request(Session session, Channel channel)
{
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
// byte SSH_MSG_CHANNEL_REQUEST(98)
// uint32 recipient channel
// string request type // "x11-req"
// boolean want reply // 0
// boolean single connection
// string x11 authentication protocol // "MIT-MAGIC-COOKIE-1".
// string x11 authentication cookie
// uint32 x11 screen number
packet.reset();
buf.WriteByte((byte) Session.SSH_MSG_CHANNEL_REQUEST);
buf.WriteInt(channel.getRecipient());
buf.WriteString(Util.getBytes("x11-req"));
buf.WriteByte((byte)(waitForReply() ? 1 : 0));
buf.WriteByte((byte)0);
buf.WriteString(Util.getBytes("MIT-MAGIC-COOKIE-1"));
buf.WriteString(ChannelX11.getFakedCookie(session));
buf.WriteInt(0);
session.write(packet);
}
示例11: request
public void request(Session session, Channel channel)
{
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
//byte SSH_MSG_CHANNEL_REQUEST
//uint32 recipient_channel
//string "window-change"
//boolean FALSE
//uint32 terminal width, columns
//uint32 terminal height, rows
//uint32 terminal width, pixels
//uint32 terminal height, pixels
packet.reset();
buf.WriteByte((byte) Session.SSH_MSG_CHANNEL_REQUEST);
buf.WriteInt(channel.getRecipient());
buf.WriteString(Util.getBytes("window-change"));
buf.WriteByte((byte)(waitForReply() ? 1 : 0));
buf.WriteInt(width_columns);
buf.WriteInt(height_rows);
buf.WriteInt(width_pixels);
buf.WriteInt(height_pixels);
session.write(packet);
}
示例12: encode
// encode will bin invoked in write with synchronization.
public void encode(Packet packet)
{
//System.Console.WriteLine("encode: "+packet.buffer.buffer[5]);
//System.Console.WriteLine(" "+packet.buffer.index);
//if(packet.buffer.buffer[5]==96){
//Thread.dumpStack();
//}
if(deflater!=null)
{
packet.buffer.index=deflater.compress(packet.buffer.buffer,
5, packet.buffer.index);
}
if(c2scipher!=null)
{
packet.padding(c2scipher.getIVSize());
int pad=packet.buffer.buffer[4];
lock(random)
{
random.fill(packet.buffer.buffer, packet.buffer.index-pad, pad);
}
}
else
{
packet.padding(8);
}
byte[] mac=null;
if(c2smac!=null)
{
c2smac.update(seqo);
c2smac.update(packet.buffer.buffer, 0, packet.buffer.index);
mac=c2smac.doFinal();
}
if(c2scipher!=null)
{
byte[] buf=packet.buffer.buffer;
c2scipher.update(buf, 0, packet.buffer.index, buf, 0);
}
if(mac!=null)
{
packet.buffer.putByte(mac);
}
}
示例13: sendKeepAliveMsg
public void sendKeepAliveMsg()
{
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
packet.reset();
buf.putByte((byte)SSH_MSG_GLOBAL_REQUEST);
buf.putString(keepalivemsg);
buf.putByte((byte)1);
write(packet);
}
示例14: sendIgnore
public void sendIgnore()
{
Buffer buf=new Buffer();
Packet packet=new Packet(buf);
packet.reset();
buf.putByte((byte)SSH_MSG_IGNORE);
write(packet);
}
示例15: setPortForwarding
private void setPortForwarding(int rport)
{
lock(grr)
{
Buffer buf=new Buffer(100); // ??
Packet packet=new Packet(buf);
try
{
// byte SSH_MSG_GLOBAL_REQUEST 80
// String "tcpip-forward"
// bool want_reply
// String address_to_bind
// uint32 port number to bind
packet.reset();
buf.putByte((byte) SSH_MSG_GLOBAL_REQUEST);
buf.putString( new String( "tcpip-forward" ).getBytes());
// buf.putByte((byte)0);
buf.putByte((byte)1);
buf.putString(new String("0.0.0.0").getBytes());
buf.putInt(rport);
write(packet);
}
catch(Exception e)
{
throw new JSchException(e.ToString());
}
grr.setThread(Thread.currentThread());
try{ Thread.Sleep(10000);}
catch(Exception e)
{
}
int reply=grr.getReply();
grr.setThread(null);
if(reply==0)
{
throw new JSchException("remote port forwarding failed for listen port "+rport);
}
}
}