最近工程裏面在調用Ganymed SSH-2 的Connection的authenticateWithPassword(name,password)的方法的時候。發現一個BUG。連續調用authenticateWithPassword超過9次會IOException
因爲要利用authenticateWithPassword(name,password)方法登錄路由器的後臺,但是路由器的型號太多,導致路由器的密碼有十多個。
所以在鏈接的時候,只能讓密碼循環去調用authenticateWithPassword(name,password)方法,來登錄路由器
重點來了:
先初始化Connection 對象,再進行鏈接。
Connection conn = new Connection(host, port);
conn.connect();
// 這裏開始調用方法,登錄路由器的後臺
這個psws是一個數組,裏面是密碼的字符串,總共長度爲15!
for(int i=0;i<psws.length;i++){
//重點是這裏!當循環到第十次,也就是i=9的時候,authenticateWithPassword方法會直接拋出IOException!
//如果是9的倍數的時候,就重新初始化Connection 對象(這樣,Connection 對象就會指向一個新的內存地址)
if(i!=0&&i%9==0){
conn = new Connection(host, port);
conn.connect();
}
//這裏就是登陸路由器的後臺(用賬號密碼登陸)
isAuthenticated = conn.authenticateWithPassword(userName, psws[i]);
if (isAuthenticated) {
break;
}
}