In: Computer Science
in Java - implement ftp-server and ftp-client.
ftp-server
Logging into ftp-server from ftp-client
The ftp-server is an interactive, command-line program that creates
a server socket, and waits for connections.
Once connected, the ftp-client can send and receive files with
ftp-server until ftp-client logs out.
Sending and receiving files
The commands sent from the ftp-client to the ftp-server must
recognize and handle are these:
rename- the ftp-server responds to this command by renaming the named file in its current directory to the new file name. If the file does not exist, or if the second file name is not provided, ftp-server responds with the string "...huh?..."
ftp-client
When ftp-client starts up, it should connect to the ftp-server
using the IP address of the server, and a port number. Once a
connection is established, ftp-client should prompt the user with
the prompt string, "ftp> ", and wait for keyboard input from the
user.
Valid keyboard input includes the commands described in the ftp-server section of this write-up. The ftp-client user uses these commands to send and receive files, get a directory listing from the ftp-server's current directory, and get a help screen.
write the ftp-server first and test with telnet. Once you're
satisfied that ftp-server is running, then start working on
ftp-client.
Ans :
Giving you the simple solution with two different program server
and client. Go through the entire program this will help you a lot
========== Server=============
=========================================================== import
java.net.*; import java.io.*; import java.util.*; public class FTPS
{ public static void main(String args[]) throws Exception {
ServerSocket soc=new ServerSocket(5217); System.out.println(\"Port
Number 5217 started\"); while(true) {
System.out.println(\"Connection ==waiting===...\"); transferfile
t=new transferfile(soc.accept()); } } } class transferfile extends
Thread { Socket ClientSoc; DataInputStream din; DataOutputStream
dout; transferfile(Socket soc) { try { ClientSoc=soc; din=new
DataInputStream(ClientSoc.getInputStream()); dout=new
DataOutputStream(ClientSoc.getOutputStream());
System.out.println(\"Client Connected ...\"); start(); }
catch(Exception ex) { } } void SendFile() throws Exception { String
filename=din.readUTF(); File f=new File(filename); if(!f.exists())
{ dout.writeUTF(\"File Not Found\"); return; } else {
dout.writeUTF(\"READY\"); FileInputStream fin=new
FileInputStream(f); int ch; do { ch=fin.read();
dout.writeUTF(String.valueOf(ch)); } while(ch!=-1); fin.close();
dout.writeUTF(\"File Receive Successfully\"); } } void
ReceiveFile() throws Exception { String filename=din.readUTF();
if(filename.compareTo(\"File not found\")==0) { return; } File
f=new File(filename); String option; if(f.exists()) {
dout.writeUTF(\"File Already Exists\"); option=din.readUTF(); }
else { dout.writeUTF(\"SendFile\"); option=\"Y\"; }
if(option.compareTo(\"Y\")==0) { FileOutputStream fout=new
FileOutputStream(f); int ch; String temp; do { temp=din.readUTF();
ch=Integer.parseInt(temp); if(ch!=-1) { fout.write(ch); }
}while(ch!=-1); fout.close(); dout.writeUTF(\"File Send
Successfully\"); } else { return; } } public void run() {
while(true) { try { System.out.println(\"Command ==waiting==
...\"); String Command=din.readUTF();
if(Command.compareTo(\"GET\")==0) { System.out.println(\"\\tGET
Command Received ...\"); SendFile(); continue; } else
if(Command.compareTo(\"SEND\")==0) { System.out.println(\"\\tSEND
Command Receiced ...\"); ReceiveFile(); continue; } else
if(Command.compareTo(\"DISCONNECT\")==0) {
System.out.println(\"\\tDisconnect Command Received ...\");
System.exit(1); } } catch(Exception ex) { } } } }
==========================================
=============== Client==================== ====================================================== import java.net.*; import java.io.*; import java.util.*; class FTPC { public static void main(String args[]) throws Exception { Socket soc=new Socket(\"127.0.0.1\",5217); transferfileClient t=new transferfileClient(soc); t.displayMenu(); } } class transferfileClient { Socket ClientSoc; DataInputStream din; DataOutputStream dout; BufferedReader br; transferfileClient(Socket soc) { try { ClientSoc=soc; din=new DataInputStream(ClientSoc.getInputStream()); dout=new DataOutputStream(ClientSoc.getOutputStream()); br=new BufferedReader(new InputStreamReader(System.in)); } catch(Exception ex) { } } void SendFile() throws Exception { String filename; System.out.print(\"Enter File Name :\"); filename=br.readLine(); File f=new File(filename); if(!f.exists()) { System.out.println(\"File not Exists...\"); dout.writeUTF(\"File not found\"); return; } dout.writeUTF(filename); String msgFromServer=din.readUTF(); if(msgFromServer.compareTo(\"File Already Exists\")==0) { String Option; System.out.println(\"File Already Exists. Want to OverWrite (Y/N) ?\"); Option=br.readLine(); if(Option==\"Y\") { dout.writeUTF(\"Y\"); } else { dout.writeUTF(\"N\"); return; } } System.out.println(\"Sending File ...\"); FileInputStream fin=new FileInputStream(f); int ch; do { ch=fin.read(); dout.writeUTF(String.valueOf(ch)); } while(ch!=-1); fin.close(); System.out.println(din.readUTF()); } void ReceiveFile() throws Exception { String fileName; System.out.print(\"Enter File Name :\"); fileName=br.readLine(); dout.writeUTF(fileName); String msgFromServer=din.readUTF(); if(msgFromServer.compareTo(\"File Not Found\")==0) { System.out.println(\"File not found on Server ...\"); return; } else if(msgFromServer.compareTo(\"READY\")==0) { System.out.println(\"Receiving File ...\"); File f=new File(fileName); if(f.exists()) { String Option; System.out.println(\"File Already Exists. Want to OverWrite (Y/N) ?\"); Option=br.readLine(); if(Option==\"N\") { dout.flush(); return; } } FileOutputStream fout=new FileOutputStream(f); int ch; String temp; do { temp=din.readUTF(); ch=Integer.parseInt(temp); if(ch!=-1) { fout.write(ch); } }while(ch!=-1); fout.close(); System.out.println(din.readUTF()); } } public void displayMenu() throws Exception { while(true) { System.out.println(\"[ MENU ]\"); System.out.println(\"1. Send File\"); System.out.println(\"2. Receive File\"); System.out.println(\"3. Exit\"); System.out.print(\"\\nEnter Choice :\"); int choice; choice=Integer.parseInt(br.readLine()); if(choice==1) { dout.writeUTF(\"SEND\"); SendFile(); } else if(choice==2) { dout.writeUTF(\"GET\"); ReceiveFile(); } else { dout.writeUTF(\"DISCONNECT\"); System.exit(1); } } } }