我有一个工作的ssh应用程序界面,但我想知道如何实现两个按钮 - 一个通过ssh连接和一个按钮断开与ssh的连接。这是使用android工作室。我尝试的任何实现都导致代码中存在“未解决的”变量。 我目前在布局文件中实现了两个按钮 - 一个带有点击消息'go',然后点击消息'stop'。我认为它可能比onclicklistener更容易,但任何解决方案都是受欢迎的。 这是活动代码
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import java.io.ByteArrayOutputStream;
import java.util.Properties;
public class mainmenu extends AppCompatActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mainmenu);
new AsyncTask<Integer, Void, Void>() {
@Override
protected Void doInBackground(Integer... params) {
try {
executeRemoteCommand("username", "password", "IP", 22);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}.execute(1);
}
public static String executeRemoteCommand (String username, String password, String hostname,
int port)
throws Exception {
JSch jsch = new JSch();
Session session = jsch.getSession(username, hostname, port);
session.setPassword(password);
// Avoid asking for key confirmation
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
// SSH Channel
// Execute comman
ChannelExec channelssh = (ChannelExec)
session.openChannel("exec");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
channelssh.setOutputStream(baos);
channelssh.setCommand(" 1");
channelssh.connect();
channelssh.disconnect();
return baos.toString();
}
}
每当我尝试将'session'作为一个静态变量时,它会抛出一个错误并说当我尝试这个按钮结构时它没有得到解决:
public void go (void){
channelssh.connect()
}