在断开连接按钮上,我尝试了:
relivant按钮代码的当前部分
private void jButtonDisconnectActionPerformed(java.awt.event.ActionEvent evt) {
this.channel.disconnect();
this.session.disconnect();
}
private void WinConnect(){
String SshPortNumb = (String)SshPort.getSelectedItem();
int SshPortNum = Integer.parseInt(SshPortNumb);
String PcIpNum = (String)PcIp.getText();
String host = (String)SiteIp.getText();
String VncPortNumb = VncPort.getText();
int VncPortNum = Integer.parseInt(VncPortNumb);
String user = (String)UserName.getText();
String PasswordVal = (String)Password.getText();
String VncPathpre = VncPath.getText();
String VncPathdat = "\""+VncPathpre+"\"";
try{
JSch jsch=new JSch();
jsch.setKnownHosts("known_hosts");
this.session=jsch.getSession(user, host, SshPortNum);
String passwd = PasswordVal;
this.session.setPassword(passwd);
UserInfo ui = new MyUserInfo(){
public void showMessage(String message){
JOptionPane.showMessageDialog(null, message);
}
public boolean promptYesNo(String message){
Object[] options={ "yes", "no" };
int foo=JOptionPane.showOptionDialog(null,
message,
"Warning",
JOptionPane.DEFAULT_OPTION,
JOptionPane.WARNING_MESSAGE,
null, options, options[0]);
return foo==0;
}
};
jButtonDisconnect.setEnabled(true);
jButtonConnect.setEnabled(false);
this.session.setUserInfo(ui);
this.session.connect(30000);
this.session.setPortForwardingL(7051, PcIpNum, VncPortNum);
this.channel=session.openChannel("shell");
this.channel.setInputStream(System.in);
this.channel.setOutputStream(System.out);
this.channel.connect(3*1000);
}
catch(Exception e){
System.out.println(e);
}
}
public class RemoteDesktop extends javax.swing.JFrame {
private Session session;
private Channel channel;
编辑:猜是因为varible会话在winconnect中,而不是在按钮中,所以找不到它?
Edit2:尝试下面的建议后,单击断开连接就会锁定
Edit5:如果调用session.disconnect确实有效,则选中此选项,但由于某种原因,它会导致我的程序锁定
因为你只是发布了一段源代码,我只能猜测。根据错误消息,方法.addActionListener()
创建了一个自己的变量范围。所以你不能访问父母的上下文。
尝试将变量session session
移动到全局范围,如下所示:
public class YourJavaClass
{
private Session session;
public static void main()
{
...
}
private void connect(String location)
{
try
{
JSch jsch=new JSch();
jsch.setKnownHosts(location);
this.session=jsch.getSession(user, host, SshPortNum);
String passwd = PasswordVal;
this.session.setPassword(passwd);
this.session.connect(30000);
session.setPortForwardingL(7051, PcIpNum, VncPortNum);
}
private void yourGuiMethod()
{
...
jButtonDisconnect.addActionListener(new ActionListener()
{
public void jButtonDisconnectActionPerformed(java.awt.event.ActionEvent evt)
{
this.session.disconnect();
}
});
...
}
}
如果你愿意,你可以否决我的答案。不过请记住,目前您还没有发布足够的源代码。所以我只能猜测。
我正在使用JSch在远程机器上运行shell脚本,并使用JSch通道在日志文件中打印命令日志。问题是,当脚本结束时,我会创建一个通道。断开连接,断开连接后不久,系统将关闭。out停止打印到日志文件中。代码如下: 日志文件中的行: 之前断开这里退出-状态: 0 如果您在我上面粘贴的方法中看到,sysout打印的实际上就是“通道”上方的一个。断开'。下面的那个没有打印出来!所有功能正常,总体输出符合我
我有一个带有两个按钮的swing应用程序,用于运行和停止执行JSch命令。所以我有下一个方法,当我们点击开始按钮时调用: 正如你上面看到的,我们有is取消变量,它是布尔变量,当点击停止按钮时,我们将其设置为false。所以我的问题是当用户点击停止按钮和通道与会话成为断开,zgrep表达式继续工作在服务器上。我认为channel.disconnect()应该停止我在服务器上运行的所有命令,有人能建议
我使用java ssh客户端(http://www.jcraft.com/jsch/)连接到远程机器并执行命令。代码工作正常,直到我连接到远程机器并执行命令。然而,问题是,即使命令执行成功,通道和会话也不会断开。 我也打电话给session.disconnect和channel.disconnect,但仍然是问题所在。 这是我的代码: 请建议
JSch 是SSH2的一个纯Java实现。它允许你连接到一个sshd 服务器,使用端口转发,X11转发,文件传输等等。你可以将它的功能集成到你自己的 程序中。同时该项目也提供一个J2ME版本用来在手机上直连SSHD服务器。
这是一个会议应用程序,我正在启动传出呼叫,以使我的VoIP呼叫具有高优先级,并且在我进行VoIP呼叫时不会中断传入呼叫。 我在我的应用程序中使用WebRTC CallKit。我开始了一个呼叫,当我按下锁定/电源按钮,然后CallKit呼叫断开,我的Voip呼叫音频路由更改为接收器并保持不变。 为什么要锁定iPhone以终止通话。 这是我的代码。
断开与wifi的连接. 请求方式: "|2|2|\r" 返回值: "|2|1|\r" wifi连接状态:wifi断开连接 Arduino样例: softSerial.print("|2|2|\r");