Ask Question, Ask an Expert

+61-413 786 465

info@mywordsolution.com

Ask Computer Engineering Expert

In this assignment, you will prepare ftpread, an FTP reader client in C in the style of the tftpread program written in class.

FTP is described in RFC 959. You should start by reading and thoroughly understanding the relevant portions of this RFC.

Your client will start by making a TCP "control" connection to the FTP daemon on a host specified on the command line. You will then establish a TCP "data" connection to retrieve a file at a path specified on the command line, writing the retrieved file to standard output as tftpread does.

Your client must authenticate itself with username "anonymous" (spelled correctly) and your email address as the "password", as per the specifications for anonymous FTP.

Your client must be able to retrieve a file in binary stream mode. There are two basic types of retrieve: "active" and "passive". In an active FTP retrieve, you listen for a data connection, then retrieve the file from that data connection when the server connects to you. In a passive FTP retrieve, you connect to a port specified by the server and retrieve the data from there.

For the purposes of this assignment, you are successful when your ftpread program can retrieve the file hello.txt from the host.

Hints

This is a fairly challenging assignment. Here's some hints to make it easier.

fdopen()

You will be sending a lot of commands, and parsing a lot of responses. One good trick is to use fdopen() to turn the file descriptor of your socket into a FILE * suitable for use with standard IO functions such as printf() and scanf(). Note that you need to fdopen() the input and output of the socket separately, else you may get confusion with buffering.

FILE *s_in = fdopen(s, "r");
FILE *s_out = fdopen(s, "w");
expect / send

Parsing response codes gets pretty tedious too, so you will want some code to handle that. I recommend my "expect / send" library, also available on my GitHub. This (documented) C library provides simple functions for sending commands and dealing with expected responses.

You will probably want to just hardwire your client to not handle unexpected response codes gracefully: just exit. That's what my expect / send library does, and it's fine for this assignment. The easiest way to discover what response codes to expect is via experimentation.

The PORT command

Whether doing an active or passive transfer, you will need to use the PORT command to inform the server of the IP address and port number of your end of the socket. The best way to get this information is via the getsockname() call. Make sure you send the PORT bytes in network order.

Passive transfers

The order of operations for a passive transfer is pretty specific: you must send PORT, then PASV, then connect() the data socket, then RETR. Any other order is unlikely to work.

Debugging

You will want to get a real FTP client and try retrieving the specified file that way. Use wireshark / tshark to watch the flow of commands and responses during the transaction; this is basically what you are trying to duplicate.

Make sure you turn on the cexpect_verbose variable in my expect / send library if you are using that library; it is really useful to see what your program is doing.

Misc Hints

It is really easy to get host and network byte-order problems. The routines htonl(), ntohl(), htons() and ntohs() do conversions between host and network byte order for short (16-bit, like port numbers) and long (32-bit, like IP addresses) integers.

The routine inet_ntoa() will convert a 32-bit IPv4 address into a string for printing purposes.

Computer Engineering, Engineering

  • Category:- Computer Engineering
  • Reference No.:- M995910

Have any Question?


Related Questions in Computer Engineering

The current price of dumbas common stock is 25 per share

The current price of DUMBA's common stock is $25 per share. You plan on buying it today, holding it for 4 years, and then selling it. You anticipate receiving a dividend per share of $1.00 one year from today, $2.00 two ...

Question a small financial focused business is looking to

Question : A small, financial focused business is looking to organize and secure its network. It currently has a single public IP address from a local telecom. Construct an argument as to how you think a company should e ...

Question identify and discuss pros and cons of the

Question: Identify and discuss pros and cons of the webrezpro service compared to a traditional PMS. Please follow the Discussion Rubric to receive credit for posts. The response must be typed, single spaced, must be in ...

Question skyeducation will develop a new branch in the city

Question : SkyEducation will develop a new branch in the city for J2EE programming training. The information is given in the following table. (Ignore the crashing parameters.) Task a b c d e f g Predecessors - - - a b c ...

What decimal number does the bit pattern 0xc0d40000

What decimal number does the bit pattern 0xC0D40000 represent if it is: A two's complement integer An unsigned integer A floating point number assuming the IEE 754 single precision format Please provide a detailed explan ...

What are your thoughts on grant writing and grant money

What are your thoughts on grant writing and grant money toward purchase? How essential is this practice when looking at gaining money toward purchases?

What pieces of hardware and software do the collision

What pieces of hardware and software do the collision detection?

Question suppose you want to store the following

Question : Suppose you want to store the following information: Student_id Course Mark 111 Maths 78 111 Physics 90 222 Biology 89 333 Physics 60 333 Chemistry 75 1.a Is this table in first normal form? Why or Why Not? 1. ...

Should you perform a log transformation on a categorical

Should you perform a log transformation on a categorical (nominal) variable, or can you only do that for continuous variables?

Tasks1 identify possible actors and use cases involved in

Tasks: 1. Identify possible actors and use cases involved in Personal Trainer's operations. 2. Create an object relationship diagram for the Personal Trainer information system. 3. Create a use case diagram for the syste ...

  • 4,153,160 Questions Asked
  • 13,132 Experts
  • 2,558,936 Questions Answered

Ask Experts for help!!

Looking for Assignment Help?

Start excelling in your Courses, Get help with Assignment

Write us your full requirement for evaluation and you will receive response within 20 minutes turnaround time.

Ask Now Help with Problems, Get a Best Answer

Why might a bank avoid the use of interest rate swaps even

Why might a bank avoid the use of interest rate swaps, even when the institution is exposed to significant interest rate

Describe the difference between zero coupon bonds and

Describe the difference between zero coupon bonds and coupon bonds. Under what conditions will a coupon bond sell at a p

Compute the present value of an annuity of 880 per year

Compute the present value of an annuity of $ 880 per year for 16 years, given a discount rate of 6 percent per annum. As

Compute the present value of an 1150 payment made in ten

Compute the present value of an $1,150 payment made in ten years when the discount rate is 12 percent. (Do not round int

Compute the present value of an annuity of 699 per year

Compute the present value of an annuity of $ 699 per year for 19 years, given a discount rate of 6 percent per annum. As