ssh トンネリング プログラムをプログラムしようとしていますが、使用されなくなったポートがまだ使用できないようです。私のトンネルの構造の例:
最初のトンネル: ローカル ポート -> 22、ローカル IP: 1.2.3.4、ユーザー...、pw...、トンネルポート -> 5000
次のトンネル: ローカル ポート -> 5000、ローカル IP: localhost、user...、pw..、tunnelport -> 5001
次のトンネル: ローカル ポート -> 5001、ローカル IP: localhost、user...、pw..、tunnelport -> 5002
ここまでは順調ですね。ここで、すべてのトンネルを閉じようとするコードを次に示します。
private void sortiiii(Map<Session, Integer> sessions) throws JSchException{
Map<Session, Integer> map = sessions;
ValueComparator bvc = new ValueComparator(map);
TreeMap<Session, Integer> sorted_map = new TreeMap(bvc);
sorted_map.putAll(map);
for (Session key : sorted_map.keySet()) {
System.out.println(sorted_map.get(key));
String [] alle = key.getPortForwardingL();
for (int i=0; i<alle.length; ++i){
System.out.println(alle[i]);
}
key.delPortForwardingL(sorted_map.get(key));
key.disconnect();
}
}
1 つのトンネルが前のトンネルを必要とするため、マップはソートされます...
接続をクリーニングした後、ポート 5000、5001、5002... が利用できない理由を誰でも想像できますか?