Android无法连接到Windows FTP服务器。始终使用在常规java中工作的相同凭据获取超时

Android无法连接到Windows FTP服务器。始终使用在常规java中工作的相同凭据获取超时,java,android,ftp,android-networking,apache-commons-net,Java,Android,Ftp,Android Networking,Apache Commons Net,我正在尝试通过android应用程序连接到windows计算机上运行的FTP。我不确定哪里出了问题,因为相同的代码在常规java项目中工作 我的舱单得到了许可 一个片段运行连接代码。我试过apache和edtftpj,它们都有相同的问题 Edtftpj 导入com.enterpriseedt.net.ftp.FTPConnectMode; 导入com.enterpriseedt.net.ftp.FTPException; 导入com.enterprisedt.net.ftp.FileTran

我正在尝试通过android应用程序连接到windows计算机上运行的FTP。我不确定哪里出了问题,因为相同的代码在常规java项目中工作

我的舱单得到了许可


一个片段运行连接代码。我试过apache和edtftpj,它们都有相同的问题

Edtftpj

导入com.enterpriseedt.net.ftp.FTPConnectMode;
导入com.enterpriseedt.net.ftp.FTPException;
导入com.enterprisedt.net.ftp.FileTransferClient;
导入java.io.IOException;
导入java.io.OutputStream;
导入java.util.Random;
公共类SecondFragment扩展了片段
{
私人活动;
私有EditText serverIPView、serverPortView;
私有EditText serverUsernameView、serverPasswordView;
私有线程ftpThread=新线程(new Runnable(){
@凌驾
公开募捐
{
字符串serverHost=serverIPView.getText().toString();
字符串serverPort=serverPortView.getText().toString();
字符串username=serverUsernameView.getText().toString();
字符串密码=serverPasswordView.getText().toString();
试一试{
FileTransferClient=新FileTransferClient();
getAdvancedFTPSettings().setConnectMode(FTPConnectMode.PASV);
客户端.setRemoteHost(“192.168.1.50”);
客户端设置远程端口(21);
client.setUserName(用户名);
client.setPassword(密码);
Random rand=新的Random();
字节[]字节=新字节[1000];
rand.nextBytes(字节);
client.connect();
OutputStream out=client.uploadStream(“temp”);
long begin=System.nanoTime();
out.write(字节);
long end=System.nanoTime();
out.close();
client.deleteFile(“temp”);
client.disconnect();
双倍时间=(双倍)(结束-开始)/100000000;
Log.i(“RunFTP”,String.valueOf(time)+“seconds”);
}捕获(IOException | FTPEException e){
e、 printStackTrace();
}
}
});
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_second,容器,假);
}
已创建公用void onview(@NonNull视图,Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
mainActivity=getActivity();
//获取输入的服务器IP和端口的用户文本视图
serverIPView=view.findViewById(R.id.ftpSelectedIP);
serverPortView=view.findViewById(R.id.ftpSelectedPort);
//获取输入的服务器凭据的用户文本视图
serverUsernameView=view.findViewById(R.id.ftpSelectedUsername);
serverPasswordView=view.findViewById(R.id.ftpSelectedPassword);
按钮runButton=view.findviewbyd(R.id.ftpRunButton);
runButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
ftpThread.start();
试一试{
ftpThread.join();
}捕捉(中断异常e){
e、 printStackTrace();
}
}
});
}
}
Apache Commons:

import org.apache.commons.net.ftp.FTPClient;
导入org.apache.commons.net.ftp.FTPReply;
导入java.io.IOException;
导入java.io.OutputStream;
导入java.util.Random;
公共类SecondFragment扩展了片段
{
私人活动;
私有EditText serverIPView、serverPortView;
私有EditText serverUsernameView、serverPasswordView;
私有线程ftpThread=新线程(new Runnable(){
@凌驾
公开募捐
{
字符串username=serverUsernameView.getText().toString();
字符串密码=serverPasswordView.getText().toString();
FTPClient ftp=新的FTPClient();
试一试{
ftp.connect(“192.168.1.50”,21);
ftp.login(用户名、密码);
System.out.print(ftp.getReplyString());
int reply=ftp.getReplyCode();
如果(!FTPReply.isPositiveCompletion(回复)){
ftp.disconnect();
System.err.println(“FTP服务器拒绝连接”);
系统出口(1);
}
Random rand=新的Random();
字节[]字节=新字节[1000];
rand.nextBytes(字节);
setFileType(FTPClient.BINARY文件类型);
ftp.setFileTransferMode(FTPClient.STREAM_TRANSFER_MODE);
ftp.enterLocalPassiveMode();
OutputStream out=ftp.storeFileStream(“temp”);
long begin=System.nanoTime();
out.write(字节);
long end=System.nanoTime();
ftp.deleteFile(“temp”);
ftp.logout();
双倍时间=(双倍)(结束-开始)/100000000;
Log.i(“RunFTP”,String.valueOf(time)+“seconds”);
}捕获(IOException | InterruptedException e){
e、 printStackTrace();
}
}
});
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态)
{
//为该碎片膨胀布局
返回充气机。充气(R.layout.fragment_second,容器,假);
}
已创建公用void onview(@NonNull视图,Bundle savedInstanceState){
super.onViewCreated(视图,savedInstanceState);
mainActivity=getActivity();
//获取输入的服务器IP的用户文本视图