当我使用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);
}
}