> Hi
>
> Congratulations for your work with jcraft.scp library. We are using your
> jcraft library. After 2 months with success sending files to our server, we
> are receiving a message "java.io.IOException: broken channel".
> We cleaned our firewall without success, but when we try it outside our
> network it's OK. Can you help us?
>
> Thanks
>
> Flávio Brito
> Rio de Janeiro - Brazil
>
> Our code
> /*
>  * ScpToFtp.java
>  *
>  * Created on 19 de Abril de 2007, 14:46
>  *
>  * To change this template, choose Tools | Template Manager
>  * and open the template in the editor.
>  */
>
> package utils;
>
> import com.jcraft.jsch.*;
> import java.awt.Container;
> import java.awt.GridBagConstraints;
> import java.awt.GridBagLayout;
> import java.awt.Insets;
> import java.io.File;
> import java.io.FileInputStream;
> import java.io.IOException;
> import java.io.InputStream;
> import java.io.OutputStream;
> import javax.swing.JLabel;
> import javax.swing.JOptionPane;
> import javax.swing.JPanel;
> import javax.swing.JPasswordField;
> import javax.swing.JTextField;
>
>
> /**
>  *
>  * @author renan
>  */
> public class ScpToFtp {
>     String senha=null;
>
>
>     /** Creates a new instance of ScpToFtp */
>     public ScpToFtp(String fileNome,String usuario, String passwd,String
> hostSsh,String portaSsh ,String fileNome2) throws JSchException,
> IOException  {
>
>
>         FileInputStream fis=null;
>
>
>             String lfile=fileNome;
>             String user=usuario;
>             senha = passwd;
>             String host=hostSsh;
>             String rfile=fileNome2;
>
>             JSch jsch=new JSch();
>             Session session=jsch.getSession(user, host, 8155);
>
>             // username and password will be given via UserInfo interface.
>             UserInfo ui=new MyUserInfo();
>             session.setUserInfo(ui);
>             session.connect();
>
>             // exec 'scp -t rfile' remotely
>             String command="scp -p -t "+rfile;
>             Channel channel=session.openChannel("exec");
>             ((ChannelExec)channel).setCommand(command);
>
>             // get I/O streams for remote scp
>             OutputStream out=channel.getOutputStream();
>             InputStream in=channel.getInputStream();
>
>             channel.connect();
>
>
>             // send "C0644 filesize filename", where filename should not
> include '/'
>             long filesize=(new File(lfile)).length();
>             command="C0644 "+filesize+" ";
>             if(lfile.lastIndexOf('/')>0){
>                 command+=lfile.substring(lfile.lastIndexOf('/')+1);
>             } else{
>                 command+=lfile;
>             }
>             command+="\n";
>             out.write(command.getBytes());
>             out.flush();
>
>             // send a content of lfile - manadan o arquivo
>             fis=new FileInputStream(lfile);
>
>             byte[] buf=new byte[1024];
>             int nLidos;
>             while((nLidos = fis.read(buf))>=0){
>                 out.write(buf,0,nLidos);
>             }
>
>        /* while(true){
>             int len=fis.read(buf, 0, buf.length);
>             if(len<=0) break;
>             out.write(buf, 0, len); //out.flush();
>
>         }*/
>             fis.close();
>             fis=null;
>             // send '\0'
>             buf[0]=0;
>             out.write(buf, 0, 1);
>             out.flush();
>             out.close();
>             channel.disconnect();
>             session.disconnect();
>
>
>            if(fis!=null)
>                 fis.close();
>
>
>     }
>
>     static int checkAck(InputStream in) throws Exception{
>         int b=in.read();
>         // b may be 0 for success,
>         //          1 for error,
>         //          2 for fatal error,
>         //          -1
>         if(b==0) return b;
>         if(b==-1) return b;
>
>         if(b==1 || b==2){
>             StringBuffer sb=new StringBuffer();
>             int c;
>             do {
>                 c=in.read();
>                 sb.append((char)c);
>             }
>             while(c!='\n');
>             if(b==1){ // error
>                 System.out.print(sb.toString());
>             }
>             if(b==2){ // fatal error
>                 System.out.print(sb.toString());
>             }
>         }
>         return b;
>     }
>
>     public class MyUserInfo implements UserInfo,  UIKeyboardInteractive{
>
>         public String getPassphrase() {
>             return null;
>         }
>
>         public String getPassword() {
>             return senha;
>         }
>
>         public boolean promptPassword(String string) {
>             return true;
>         }
>
>         public boolean promptPassphrase(String string) {
>             return true;
>         }
>
>         public boolean promptYesNo(String string) {
>             return true;
>         }
>
>         public void showMessage(String string) {
>         }
>
>         public String[] promptKeyboardInteractive(String string, String
> string0, String string1, String[] prompt, boolean[] b) {
>             String[] response=new String[prompt.length];
>             for(int i=0; i<prompt.length; i++){
>                 response[i]=senha;
>             }
>             return response;
>
>         }
>
>     }
>
> }
>
>
>
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
JSch-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jsch-users

Reply via email to