联系方式

  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-23:00
  • 微信:codinghelp

您当前位置:首页 >> Java编程Java编程

日期:2019-04-20 01:18

Assignment 2

The Trivial File Transfer Protocol (TFTP) is an Internet software utility for

transferring files that is simpler to use than the File Transfer Protocol (FTP) but

less capable. It is used where user authentication and directory visibility are not

required. For example, it is used by Cisco routers and switches to transfer

images of the operating system from/to the devices.

NOTE: TFTP's port is 69 (a system/OS port). This is below 1024 and therefore

you cannot bind a Socket to it unless you have administrative access rights on

the machine you are working. To avoid any complications you can use any port >

1024 to bind server sockets.

Task 1: Implementation of the Trivial File

Transfer Protocol (TFTP)

For this task you need to implement (in Java) the Trivial File Transfer Protocol

(TFTP) as specified in RFC 1350 (Links to an external site.)Links to an external

site.. You will submit source code for a client and server application that 'speak'

the TFTP protocol. You will built your protocol on top of UDP. Compared to the

specifications in the RFC, you will implement a slightly simplified version:

Support for octet mode only. The files should be transferred as a raw

sequence of bytes. Do not read, write or transfer files as characters.

Support only for error handling when the server is unable to satisfy the

request because the file cannot be found.

No support for error handling when data duplication occurs.

The client and server applications should be simple Java console applications.

The server should operate (i.e. read and write files) in the directory where it is

started from. The server should support simultaneous file transfers to and from

multiple clients. The client should just read command line arguments (or have a

very simple console-based menu - e.g. "press 1 to store file, press 2 to retrieve

file") and execute user commands (i.e. reading or writing a file).

Hint: the simplest way to implement timeouts is by calling

the setSoTimeout() method on the DatagramSocket objects (assuming that you

are using blocking I/O). If the timeout expires,

a java.net.SocketTimeoutException is raised, though the DatagramSocket is still

valid.

Task 2: Implementation of an even simpler

version of TFTP on top of TCP

For this task you will use TCP sockets to implement a protocol that operates like

TFTP (i.e. supports only read and write operations). Given that TCP supports

in-order, reliable data transport, you should not implement the relevant

mechanisms described in RFC 1350 (ACKs, retransmissions). The client and

server applications should be equally simple, as in Task 1. The server must be

able to handle multiple file transfers.

Marking Criteria

You should make sure that your code compiles. Code which does not compile

will receive at most 20%.

I will assess your assignment using the following criteria:

TFTP-UDP-Server (35%)

Is the server-side of the protocol fully and correctly implemented

(based on the specifications in the RFC)? i.e. read/write requests,

acknowledgments, timeouts, error handling, support for simultaneous

file transfers.

TFTP-UDP-Client (30%):

Is the client-side of the protocol fully and correctly implemented (based

on the specifications in the RFC)? i.e. read/write requests,

acknowledgments, timeouts, error handling.

TFTP-TCP-Server (10%)

Is the server-side of the protocol fully and correctly implemented? i.e.

read/write requests, error handling, support for simultaneous file

transfers.

TFTP-TCP-Client (10%):

Is the client-side of the protocol fully and correctly implemented? i.e.

read/write requests, error handling.

Description of Protocols (10%):

Is there description for both protocols and how/where the specifications

are implemented?

Is the description well-written with clear references to the source code?

Other Characteristics (5%):

Is the code commented appropriately?

Is it indented correctly?

? Is naming of variables and methods sensible?

Submission Guidelines

You should submit the coursework by the deadline posted on Sussex

Direct (and the submission link on Canvas). Standard penalties for late

submissions will apply. You will need to submit a .zip file containing the

following:

Well-formatted and well-documented source code (written in Java) in 4

separate Netbeans projects that can be compiled and run. The

Netbeans projects, named TFTP-UDP-Server, TFTP-UDP-Client,

TFTP-TCP-Server and TFTP-TCP-Client, respectively, will include all

required source code to execute the 2 different file transfer protocols.

A short report (up to 2000 words) describing your protocols, the source

code and the design decisions that you made.

Please do not put your names on your submissions, but do include your

candidate number. Failure to submit source code, as described in the first

bullet, will result to a zero mark as I will not be able to assess your

programming effort.

Plagiarism and Collusion

The coursework you submit is supposed to have been produced by

you and you alone. This means that you should not: work together with

anyone else on this assignment

give code for the assignment to other students

request help from external sources

do anything that means that the work you submit for assessment is not

wholly your own work, but consists in part or whole of other people’s

work, presented as your own, for which you should in fairness get no

credit

If you need help ask your tutor The University considers it misconduct to

give or receive help other than from your tutors, or to copy work from

uncredited sources, and if any suspicion arises that this has happened,

formal action will be taken. Remember that in cases of collusion (students

helping each other on assignments) the student giving help is regarded by

the University as just as guilty as the person receiving help, and is liable

to potentially receive the same penalty. Also bear in mind that suspicious

similarities in student code are surprisingly easy to spot and sadly the

procedures for dealing with it are stressful and unpleasant. Academic

misconduct also upsets other students, who do complain to us about

unfairness. So please don’t collude or plagiarise.


版权所有:留学生编程辅导网 2020 All Rights Reserved 联系方式:QQ:99515681 微信:codinghelp 电子信箱:99515681@qq.com
免责声明:本站部分内容从网络整理而来,只供参考!如有版权问题可联系本站删除。 站长地图

python代写
微信客服:codinghelp