Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema con inputstream

    Ciao ragazzi,
    ho una classe che apre una connessione SSH verso un server e per comunicare con quest'ultimo apre due canali in questo modo:

    channel.setInputStream(System.in);
    channel.setOutputStream(System.out);

    Il software funziona ed i comandi vengono ricevuti correttamente dal server se inseriti nella console di java digitandoli a mano e premendo INVIO ( System.in ).

    Avrei però bisogno di passare tali comandi in modo diverso, simulando quindi l'immissione di comandi nell'inputStream ( passandoli magari alla pressione di uno JButton ) così come avviene realmente scrivendo nella console di java ( System.in ).

    Ho provato a creare un InputStream semplice, ma passando un comando banale ( ad esempio un "ls" ) il server non sembra rispondere. Ho quindi pensato che a quest'ultimo non arriva "l'INVIO" ( così come invece succede premendo il tasto INVIO nella console di JAVA ).

    Come posso simulare l'invio nell'InputStream appena creato? ( se è quello il problema... )


  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Problema con inputstream

    Originariamente inviato da magnus
    Come posso simulare l'invio nell'InputStream appena creato? ( se è quello il problema... )
    Beh, bisognerebbe vedere cosa devi fare di preciso, se devi solo generare tu l'input o anche poterlo ricevere dallo standard-input.

    È solo una idea ma potresti usare PipedOutputStream/PipedInputStream. Crei questa coppia (uno dei due deve essere usato per creare l'altro) poi il PipedInputStream lo assegni al tuo channel e tu poi scrivi sul PipedOutputStream i comandi.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3

    Re: Re: Problema con inputstream

    Originariamente inviato da andbin
    È solo una idea ma potresti usare PipedOutputStream/PipedInputStream. Crei questa coppia (uno dei due deve essere usato per creare l'altro) poi il PipedInputStream lo assegni al tuo channel e tu poi scrivi sul PipedOutputStream i comandi.
    In che modo mediante il PipedInputStream posso passare al canale un comando del tipo:

    ls
    ( eseguito dalla pressione del tasto INVIO )

    ?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Problema con inputstream

    Originariamente inviato da magnus
    In che modo mediante il PipedInputStream posso passare al canale un comando del tipo:

    ls
    ( eseguito dalla pressione del tasto INVIO )

    ?
    Beh, intanto c'è da dire una cosa importante, cioè che PipedInputStream deve essere usato da un thread e PipedOutputStream deve essere usato da un altro thread.

    A parte questo, il PipedOutputStream "sa" scrivere solo byte, non caratteri. Quindi lo devi wrappare ad esempio in un PrintStream o PrintWriter. Ma se vuoi puoi anche scrivere direttamente il comando sotto forma di byte:

    byte[] comandoLs = { 'l', 's', '\n' };

    pos.write (comandoLs);

    dove 'pos' è un PipedOutputStream. Dipende da come vuoi scrivere il comando.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5

    Re: Re: Re: Re: Problema con inputstream

    Originariamente inviato da andbin
    Beh, intanto c'è da dire una cosa importante, cioè che PipedInputStream deve essere usato da un thread e PipedOutputStream deve essere usato da un altro thread.

    A parte questo, il PipedOutputStream "sa" scrivere solo byte, non caratteri. Quindi lo devi wrappare ad esempio in un PrintStream o PrintWriter. Ma se vuoi puoi anche scrivere direttamente il comando sotto forma di byte:

    byte[] comandoLs = { 'l', 's', '\n' };

    pos.write (comandoLs);

    dove 'pos' è un PipedOutputStream. Dipende da come vuoi scrivere il comando.
    Il fatto è che sono già riuscito a creare un inputStream ( ho provato con un FileInputStream ) ma non mi sembra che il byte \n corrisponda al tasto di INVIO.

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Re: Re: Re: Re: Problema con inputstream

    Originariamente inviato da magnus
    Il fatto è che sono già riuscito a creare un inputStream ( ho provato con un FileInputStream ) ma non mi sembra che il byte \n corrisponda al tasto di INVIO.
    La sequenza del "newline" dipende ovviamente dalla piattaforma.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7

    Re: Re: Re: Re: Re: Re: Problema con inputstream

    Originariamente inviato da andbin
    La sequenza del "newline" dipende ovviamente dalla piattaforma.
    Il server SSH girà su ubuntu.
    Indagherò.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.