Java FTP客户端/服务器登录验证
我有一个关于用Java创建FTP客户端的问题 我创建了一个应该可以工作的FTP客户端,但是当我在终端上运行它时,它会停止,等待一段时间,然后返回一条错误消息。客户端必须连接到服务器IP地址,该地址需要用户名和密码才能进行身份验证和登录。但是,我无法让登录工作 我不必创建FTP服务器,我们机构中已经有一个服务器需要连接 这是迄今为止我为FTP客户端编写的代码:Java FTP客户端/服务器登录验证,java,sockets,server,ftp,client,Java,Sockets,Server,Ftp,Client,我有一个关于用Java创建FTP客户端的问题 我创建了一个应该可以工作的FTP客户端,但是当我在终端上运行它时,它会停止,等待一段时间,然后返回一条错误消息。客户端必须连接到服务器IP地址,该地址需要用户名和密码才能进行身份验证和登录。但是,我无法让登录工作 我不必创建FTP服务器,我们机构中已经有一个服务器需要连接 这是迄今为止我为FTP客户端编写的代码: import java.io.*; 导入java.net。*; 类FTPC { 公共静态void main(字符串[]args)引发异常
import java.io.*;
导入java.net。*;
类FTPC
{
公共静态void main(字符串[]args)引发异常
{
字符串选项;
DataInputStream in=新的DataInputStream(System.in);
sockets=newsocket(“10.246.251.39”,Integer.parseInt(args[0]);
System.out.println(“菜单”);
System.out.println(“1.SEND”);
System.out.println(“2.RECEIVE”);
FTPC ftp=新的FTPC();
while(true)
{
option=in.readLine();
如果(选项等于(“1”)){
System.out.println(“接收到发送命令”);
ftp.sendfile;
}
否则,如果(选项等于(“2”)){
System.out.println(“接收到的命令”);
ftp.接收文件;
}
}
}
公共void sendfile(套接字)引发异常
{
插座ssock=s;
DataInputStream in=新的DataInputStream(System.in);
DataInputStream cin=新的DataInputStream(ssock.getInputStream());
DataOutputStream cout=新的DataOutputStream(ssock.getOutputStream());
无法写入(“接收”);
字符串filename=in.readLine();
System.out.println(“读取文件”+文件名);
cout.writeUTF(文件名);
文件f=新文件(文件名);
FileInputStream fin=新的FileInputStream(f);
int-ch;
做
{
ch=fin.read();
cout.writeUTF(String.valueOf(ch));
}而(ch!=-1);
fin.close();
System.out.println(“文件已发送”);
}
public void receivefile(套接字)引发异常
{
插座ssock=s;
DataInputStream in=新的DataInputStream(System.in);
DataInputStream cin=新的DataInputStream(ssock.getInputStream());
DataOutputStream cout=新的DataOutputStream(ssock.getOutputStream());
无法写入(“发送”);
字符串filename=in.readLine();
cout.writeUTF(文件名);
System.out.println(“接收文件”+文件名);
文件f=新文件(文件名);
FileOutputStream fout=新的FileOutputStream(f);
int-ch;
做
{
ch=Integer.parseInt(cin.readUTF());
如果(ch!=-1)四次写入(ch);
}而(ch!=-1);
System.out.println(“收到的文件…”);
fout.close();
}
}
这里有很多问题:
USER
和PASS
)SEND
和RECEIVE
都不是FTP命令。相反,请使用STOR
和RETR
。(见附件。)CWD
和LIST
命令。这些都是必要的这里有很多问题:
USER
和PASS
)SEND
和RECEIVE
都不是FTP命令。相反,请使用STOR
和RETR
。(见附件。)CWD
和LIST
命令。这些都是必要的请注意,
DataInputStream
的readLine
方法已被弃用,应替换为BufferedReader
的readLine
方法。为什么receivefile
正在写入FileOutputStream
而sendfile
正在从FileInputStream
读取?有什么我遗漏了吗?嘿,左撇子,这是因为当你收到一个文件时,你是从服务器获取文件的,当你发送一个文件时,你是在输入文件并将其发送到服务器。这个代码甚至远不是一个正确的FTP客户端。阅读FTP协议规范。请注意,DataInputStream
的readLine
方法已被弃用,应替换为BufferedReader
的readLine
方法。为什么receivefile
写入FileOutputStream
,而sendfile
正在从文件输入流
?有什么我遗漏了吗?嘿,左撇子,这是因为当你收到一个文件时,你是从服务器获取文件的,当你发送一个文件时,你是在输入文件并将其发送到服务器。这个代码甚至远不是一个正确的FTP客户端。请阅读FTP协议规范。