Esempio n. 1
0
 private void OnRequested(IAsyncResult r)
 {
     try {
         if (_closed)
         {
             return; //SSH切断があったときは非同期受信から戻ってくるが、EndAcceptを呼んでもObjectDisposedExceptionになるだけ
         }
         Socket local = _bindedLocalSocket.EndAccept(r);
         //Port Forwarding
         Channel newchannel = new Channel(_profile.SSHHost, local.RemoteEndPoint.ToString(), _id, null, local);
         lock (_connection) {
             SSHChannel remote = _connection.ForwardPort(newchannel, _profile.DestinationHost, _profile.DestinationPort, "localhost", 0); //!!最後の2つの引数未完
             Debug.WriteLine("OnRequested ch=" + remote.LocalChannelID);
             newchannel.FixChannel(remote);
             newchannel.StartAsyncReceive();
         }
     }
     catch (Exception ex) {
         if (!_closed)
         {
             Debug.WriteLine(ex.Message);
             Debug.WriteLine(ex.StackTrace);
             Util.InterThreadWarning(ex.Message);
         }
     }
     finally {
         if (!_closed)
         {
             _bindedLocalSocket.BeginAccept(new AsyncCallback(OnRequested), null);
             Debug.WriteLine("BeginAccept again");
         }
     }
 }
Esempio n. 2
0
 public override void EstablishPortforwarding(ISSHChannelEventReceiver receiver, SSHChannel channel)
 {
     try {
         Channel ch = (Channel)receiver;
         ch.FixChannel(channel);
         ch.OnChannelReady();
         ch.StartAsyncReceive();
     }
     catch (Exception ex) {
         Debug.WriteLine(ex.StackTrace);
         Util.InterThreadWarning(ex.Message);
     }
 }
Esempio n. 3
0
 private void OnRequested(IAsyncResult r)
 {
     try {
         Socket local = _bindedLocalSocket.EndAccept(r);
         //Port Forwarding
         Channel newchannel = new Channel(_profile.SSHHost, local.RemoteEndPoint.ToString(), _id, null, local);
         lock(_connection) {
             SSHChannel remote = _connection.ForwardPort(newchannel, _profile.DestinationHost, _profile.DestinationPort, "localhost", 0); //!!�Ō�̂Q�‚̈�������
             Debug.WriteLine("OnRequested ch="+remote.LocalChannelID);
             newchannel.FixChannel(remote);
             newchannel.StartAsyncReceive();
         }
     }
     catch(Exception ex) {
         if(!_closed) {
             Debug.WriteLine(ex.Message);
             Debug.WriteLine(ex.StackTrace);
             Util.InterThreadWarning(ex.Message);
         }
     }
     finally {
         if(!_closed)
             _bindedLocalSocket.BeginAccept(new AsyncCallback(OnRequested), null);
     }
 }
Esempio n. 4
0
 private void OnRequested(IAsyncResult r) {
     try {
         if (_closed)
             return; //SSH切断があったときは非同期受信から戻ってくるが、EndAcceptを呼んでもObjectDisposedExceptionになるだけ
         Socket local = _bindedLocalSocket.EndAccept(r);
         //Port Forwarding
         Channel newchannel = new Channel(_profile.SSHHost, local.RemoteEndPoint.ToString(), _id, null, local);
         lock (_connection) {
             SSHChannel remote = _connection.ForwardPort(newchannel, _profile.DestinationHost, _profile.DestinationPort, "localhost", 0); //!!最後の2つの引数未完
             Debug.WriteLine("OnRequested ch=" + remote.LocalChannelID);
             newchannel.FixChannel(remote);
             newchannel.StartAsyncReceive();
         }
     }
     catch (Exception ex) {
         if (!_closed) {
             Debug.WriteLine(ex.Message);
             Debug.WriteLine(ex.StackTrace);
             Util.InterThreadWarning(ex.Message);
         }
     }
     finally {
         if (!_closed) {
             _bindedLocalSocket.BeginAccept(new AsyncCallback(OnRequested), null);
             Debug.WriteLine("BeginAccept again");
         }
     }
 }