当我使用jsch时,我可以使用自定义outputStream吗?

问题描述 投票:0回答:0

当我使用jsch lib时,我可以使用自定义OutputStream吗?

我知道 Jsch 可以设置自定义套接字工厂。

所以我做了一个自定义的socketFactory。

但是当会话连接时,它被冻结了。它不起作用。

我认为我的自定义输出流中断了与 ssh 协议的通信。


Session session = jSch.getSession( "root", "localhost", 55000 );
        session.setPassword( "root" );
        session.setConfig( "StrictHostKeyChecking","no" );
        session.setSocketFactory( new SocketFactory() {
            @Override
            public Socket createSocket( String host, int port ) throws IOException, UnknownHostException {

                return new Socket( host, port );
            }

            @Override
            public InputStream getInputStream( Socket socket ) throws IOException {

                return socket.getInputStream();
            }

            @Override
            public OutputStream getOutputStream( Socket socket ) throws IOException {

                return socket.CustomOutputStream();
            }
        } );
        session.connect();

这是我的自定义流。


 public class CustomOutputStream extends OutputStream {


    @Override
    public void write( int b ) throws IOException {
        byte[] a = new byte[] { (byte) b };
        write(a, 0, 1);
    }


    @Override
    public void write( byte[] b, int off, int len ) throws IOException {


        System.out.println( b.hashCode() );
        JschProto.JschContents jschContents = JschProto.JschContents.newBuilder().setContent( ByteString.copyFrom( b ) )
                .setType( "t" )
                .build();

        super.write(b, off, len);
    }
}

java sockets io jsch outputstream
© www.soinside.com 2019 - 2024. All rights reserved.