私のコードでは、サーバーとの多くの対話が発生すると予想されるため、Jsch セッションをアクティブに維持しようとしています。そして、ロジックは次のとおりです。
- 1 つのスレッドがセッションでチャネルを開き、ファイルが存在するかどうかを確認します。
- 別のスレッドが同じセッションでチャネルを開いてサーバーにファイルを送信しようとしています
ただし、#1で「ファイルが見つかりません」と表示された場合、#2はここで同じ例外で失敗することがわかりました:
Header header=new Header();
header=header(buf, header);
int length=header.length;
int type=header.type;
fill(buf, length);
if(type!=SSH_FXP_STATUS && type!=SSH_FXP_HANDLE){
throw new SftpException(SSH_FX_FAILURE, "invalid type="+type);
}
if(type==SSH_FXP_STATUS){
int i=buf.getInt();
>>>> throwStatusError(buf, i);
}
byte[] handle=buf.getString(); // handle
byte[] data=null;
問題は、チャネルに 1 バイトを挿入する前に、新しいチャネルが以前のチャネルと同じエラーを受け取ったのはなぜですか?