Essay Analysis

You can user libraries like libpcap, libnet, BSD socket, etc.
it should run on system GNU/Linux
reference system: https://vutbr-my.sharepoint.com/:u:/g/personal/xvesel38_vutbr_cz/Ecthn_lpXplAuJROhs8UeEEB2nEf6KN_1dDHLN8H_ww-9A?e=LlQILE

Here is the output example:
$ mytftpclient

-R -d /home/user/readme.txt -a 147.229.181.2,169 -c octet
[2014-09-15 20:59:11.190] Requesting READ from server 147.229.181.2:69
[2014-09-15 20:59:11.454] Receiving DATA … 1536 B of 2012545 B

[2014-09-15 20:59:18.454] Transfer completed without errors


$

it has to have few parameters:
-R/W -d -t -s -a address,port -c mode -m

R or W (compulsory)
it specifies if the client will read file from server or send file on server
-d (compulsory)
specifies file
-t
timeout in seconds. Client will ask server for timeout where server can (dont have to) accept. It specifies time before retransmission of unconfirmed data
-s
maximal block size in multiples of octets. For the upper limit consider smallest of MTU from every interface on which client can send TFTP message
-m
client asks server for transfer dat throught multicast
-c
mode that can be "ascii" (or "netascii") or "binary" (or "octet")
implicitly it is set on octet (or binary)
-a
address and port of the server in IPv4 or IPv6 on which the service can run if it is not specified consider IPv4 localhost therefore 127.0.0.1 and port 69 (127.0.0.1,69)

Sample Solution