Networking Project

profileHh Ari
project14.pdf

Project

Overview:   Understand  TCP  socket  programing  by  developing  a  simplified  FTP  client  that  works  in   the   active   mode.   You   must   create   your   own   socket,   and   cannot   use   any   existing   FTP   library.   You   may   use   Python,   Java,   or   C++/C   as   the   programming   language.   This   is   a   group  project  with  up  to  two  students  per  group.  

The  client  should  be  designed  to  start  by  typing  the  command:   myftp server-name where  “server-name”  is  the  name  or  IP  address  of  the  server.  Next,  display  a  prompt   for  entering  the  FTP  user  name,  followed  by  a  prompt  for  entering  the  password.  

After  a  successful  login,  the  following  commands  should  be  available  in  the  FTP  client   prompt:     Command   Function   myftp> ls List   the   files   in   the   current   directory   of   the  

remote  server.   myftp> get remote-file Download  the  file  named  “remote-file”  from  

the  remote  server  to  the  local  machine  with  the   same  file  name.  

myftp> put local-file Upload  the  file  named  “local-file”  from  the   local   machine   to   the   remote   server   with   the   same  file  name.  

myftp> delete remote-file Delete  the  file  named  “remote-file”  from  the   remote  server.  

myftp> quit Quit  the  FTP  client.  

All   the   above   commands   (including   entering   the   user   name   and   password)   when   executed   should   return   a   Success/Failure   status.   All   the   path   names   and   file   names   should   be   considered   relative   to   the   current   directory   (unless   absolute   path   name   is   given).  After  a  successful  file  transfer,  a  success  message  should  be  displayed  with  the   number  of  bytes  transferred.  Remember  that  the  FTP  client  should  work  in  the  active   mode.  

Please   run   the   Windows/Linux/MacOS   built-­‐in   command   line   FTP   client   to   see   the   expected   result   of   each   command.   You   may   test   your   client   by   connecting   it   to   any   standard  FTP  server,  such  as  inet.cis.fiu.edu  (user  name:  demo,  password:  demopass)  or   FileZilla   server   (https://filezilla-­‐project.org/download.php?type=server)   running   on   a   Windows  machine.    

References:   Basic  FTP  Commands,  http://www.cs.colostate.edu/helpdocs/ftp.html   FTP  RFC,  http://www.ietf.org/rfc/rfc959.txt  

Submission  Guide:   Submit   a   readme.txt   file   and   the   source   code   file.   Please   include   the   following   information  in  the  readme.txt  file.  

Student  name  and  ID:  xxx   Operating  system:  Windows/Linux   Programing  language:  Python/Java/C++/C   Compiling  instructions:  xxx   Running  instructions:  xxx  

The  code  must  be  well-­‐documented.  The  grader  will  test  your  code  with  a  standard  FTP   server.  The  grader  will  use  Windows  and  Linux-­‐based  platforms  for  testing.  In  case  of   problems   or   if   you   use   an   uncommon   platform,   you   may   need   to   bring   your   own   computer  and  demonstrate  the  code.  

Grading  Criteria:   Item   Percentage   login 15%   ls 15%   get 20%   put 20%   delete 15%   quit 15%  

Plagiarism  will  be  reported  to  the  graduate  school  for  academic  dishonesty.