Я разрабатываю приложение для Android, которое собирает некоторые данные с 4-х датчиков через Bluetooh и в конце отправляет данные на SFTP-сервер.
Я использую JSCh (ChannelSftp), эта штука отлично работает с некоторыми серверами, но с сервером моего университета происходит сбой приложения.
Я провел глубокую отладку с ИТ-специалистом, и мы обнаружили, что как только канал SSH открыт, на сервер поступает некоторый фоновый трафик (например: myIP --- otherIP --- пакет). В этот момент брандмауэр закрывает соединение и происходит сбой приложения.
Есть ли способ заблокировать фоновый трафик в течение небольшого промежутка времени из приложения? У кого-нибудь была такая же проблема, как у меня?
Заранее спасибо
public class SftpClass extends AsyncTask <Object, Void, String> {
private Context context;
private long size;
private long fileSize;
public SftpClass (Context con){
context = con;
size = 0;
fileSize = -1;
}
@Override
protected String doInBackground(Object... params){
//Params: File file, String host, String port, String username, String password
File file = (File) params[0];
String host = (String) params[1];
String port = (String) params[2];
String username = (String) params[3];
String password = (String) params[4];
String path = (String) params[5];
int portnumber = Integer.valueOf(port);
fileSize = file.length();
String localFilePath = file.getAbsolutePath();
String fileName = localFilePath.substring(localFilePath.lastIndexOf("/") + 1);
String remoteFilePath = fileName;
JSch jsch = new JSch();
Session session = null;
try {
session = jsch.getSession(username, host, portnumber);
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(password);
session.connect();
Channel channel = session.openChannel("sftp");
channel.connect();
final ChannelSftp sftpChannel = (ChannelSftp) channel;
sftpChannel.put(localFilePath, path+remoteFilePath);
try
{
Thread.sleep(3000);
}
catch(InterruptedException ex)
{
Thread.currentThread().interrupt();
}
SftpATTRS attrs = null;
try {
attrs = sftpChannel.lstat(path+remoteFilePath);
} catch (SftpException e) {
e.printStackTrace();
}
if ( attrs != null){
size = attrs.getSize();
}
sftpChannel.exit();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (SftpException e) {
e.printStackTrace();
}
return "";
}
@Override
protected void onPostExecute(String result) {
if (size == fileSize){
Toast.makeText(context, "File uploaded\n"+Long.toString(size)+"Bytes", Toast.LENGTH_SHORT).show();
}
}
}