SharpSSH застревает в бесконечном потоке, читаемом в приложении C # SSH - PullRequest
3 голосов
/ 12 марта 2010

днем ​​все,

У меня небольшая проблема с библиотекой SharpSSH для .Net (см. http://www.tamirgal.com/blog/page/SharpSSH.aspx)

        SshStream ssh = new SshStream("some ip address", "some username", "some password");
        ssh.Prompt = "\n";
        ssh.RemoveTerminalEmulationCharacters = true;            

        ssh.Write("ssh some ip address");
        // Don't care about this response
        ssh.ReadResponse();

        ssh.Write("lss /mnt/sata[1-4]");
        // Don't care about this response (for now)
        ssh.ReadResponse();

        // while the stream can be read
        while (ssh.CanRead)
        {
            Console.WriteLine(ssh.ReadResponse());
        }

        ssh.Close();

Как видите, довольно прямо вперед.

Однако, когда цикл while входит, он не выйдет из цикла, когда все будет напечатано на консоли, и больше нечего читать.

Есть ли в любом случае, я могу вручную заставить его перерыв , когда больше нечего читать?

Ура, Ric

Ответы [ 2 ]

4 голосов
/ 11 мая 2010

ssh.CanRead указывает, что Stream имеет реализацию для чтения, а не для того, чтобы его можно было прочитать.

0 голосов
/ 02 мая 2012
while(true)                                                                            
{                                                                              
    //Write command to the SSH stream                                            
        ssh.Write( "some command or execute a script on aix" );                      
        data = "";                                                                   
        data = ssh.ReadResponse();                                                   
        if (data.Length < 10)     //don't wnat response like $                       
        continue;                                                                

        textWriter.Write(data);  //write all of data to file on each response loop   

        if (data.Contains("EOF"))    //was insert at end of file so I can terminate  
        break;                                                                      

}                                                                              
  textWriter.Close();                                                            
ssh.Close(); //Close the connection                                            
}                                                                                
...