In this assignment, you will implement a simple networked simulation of plane flights and you will usethreadsand communicateviaIPv4 TCP networkingC Programming

Integrity

This is an individual assignment. You should feel free to discuss aspects of C programming and the assignment specification with fellow students. You should not actively help  (or seek help from)  other students with the actual coding of your assignment solution. It is cheating to look at another student’s code and it is cheating to allow your code to be seen or shared in printed or electronic form.  You should note that all submitted code may be subject to automated checks for plagiarism and collusion. If we detect plagiarism or collusion, formal misconduct proceedings will be initiated against you. A likely penalty for  a  first offense would be a mark of 0 for the assignment. Don’t risk it! If you’re having trouble, seek help from a member of the teaching staff. Don’t be tempted to copy another student’s code.

Do not commit any code to your repository unless it is your own work or it was given to you by teaching staff.  If you have questions about this, please ask.

While you are permitted to use sample code supplied by teaching staff this year in this course.  Code supplied for other courses  or other offerings of this course is off-limits — it may be deemed to be without academic merit and removed from your program before testing.

 Purpose

In this assignment, you will implement a simple networked simulation of plane flights. A complete assignment will consist of three C99 programs:

  • roc2310: Simulates an aircraft

  • control2310: Simulates an airport

  • mapper2310: Maps airport names to ports

Multiple instances of these programs will be executed to carry out the simulation.

You   will use   threads   and communicate   via   IPv4   TCP   networking.   Your implementation must use  blocking  communications.  You  are  not permitted to use pipes or any alternative means of interprocess commmunication. To  complete all of the features of this assignment you    will need to use pthreads, you are not to call fork() nor attempt to use any   form   of   nonblocking   I/O   or   I/O   multiplexing.

Your assignment submission must comply with the C style guide

(version 2.0.4) available on the course blackboard area. It must also not  use banned functions or commands listed in the same place.

Programs

These programs make use of IDs and other  text  (info).  No  text  or IDs are allowed to contain any of the following characters:

4387028-29492-3486259

  • 'n' • 'r' • ':'

Note, they may contain spaces.

All outputs from programs should be newline terminated.

mapper2310

This program takes no command line parameters. When it starts up, it will 1. listen on an ephemeral port,

  1. print that port to stdout.

  2. act on any commands it receives via connection to the port  (the  other end of the connection will close it when it has no more commands).

Some marks are available for handling connections  one at  a  time. To get all marks related to the mapper, it will need to be able to process requests in parallel.

Command

Purpose

?ID

Send the port number for the

 

airport called ID

!ID:PORT

Add airport called ID with PORT

as the port number

@

Send back all names and their

corresponding ports

All output as a result of commands will be sent back via the connection that the command came from. • ?ID

– If there is an entry corresponding to that ID, send back

the port followed by a newline.  –  If  there  is  no  mapping,  send back a semi-colon followed by a newline.

 Mappings should be printed in lexicographic order (of ID)  with  newline at the end of  each  entry.  ID  and PORT  should be  separated  by a colon.

If any invalid commands are received,  silently discard that line and  keep reading. If ! is used for an ID which  already  has an  entry,  ignore that command.

Note: the mapper will run until killed.

Sample session

To mapper

From mapper

?To

;

!Tom:55451

 

!Albert:13021

 

@

Albert:13021

Tom:55451

?Albert

13021

!To:4444

 

@

Albert:13021 To:4444

Tom:55451

4387028-29492-34862592

 This program takes the following parameters:

  • AirportID

  • Airport info

  • mapper port (This is optional). When the  program  starts  up,  it  will:

  1. Listen on an ephemeral

  2. Print that port to stdout.

  3. If a mapper port is  given,  connect  to  the  mapper  and  register  the ID and port of this airport. It should  then  disconnect  from  the mapper.

  4. In parallel — wait for connections by planes and act on

When    a    connection    is    made    to    the    control’s    port,    one    of    two    things should happen:

  • If the text sent by the connecting party is “log”, then send back a  newline seprated list of all the rocs which have visited them (in lexicographic order). Following this, it  should  send  a  full-stop  followed by a newline and then close the

  • For any other text, the control should consider  the  text  as  the  plane’s ID and send back the control’s info (newline terminated).

Note:    Under    normal    circumstances    control2310 will run until killed. Exit conditions for control2310

Condition

Status

Message

Incorrect number of args

1

Usage: control2310 id info [mapper]

Invalid characters in ID or

info

2

Invalid char in parameter

Port        specified      but       not       a

strictly         positive      number        <

65535

3

Invalid port

Could not connect to mapper

4

Can not connect to map

roc2310

This program takes the following commandline parameters:

  1. planeID

  2. mapper port  (This   is   either   a   port   number   or   a   dash   (‘-’)).

  3. zero or more destinations (controls) to connect to in    These can either be port numbers or control IDs.

If all destinations are port numbers (> 0 and  < 65536),  the mapper  is  not required. If any of the destinations  are  not  port  numbers,  the  mapper should be contacted to find  the  ports  for  those  destinations. Once the roc knows the all the port numbers for  its  destinations,  it  should connect to each destination in turn, get the info  for  that  destination and add it (newline separated) to its log. If it is unable to connect to a destination (or the destination did not send back valid information), the roc should just move on to the next destination.

Attachments:

Instructions Files

C Programming Experts

expert
Arapera Billing
C Programming

89 Answers

expert
Simon M.
C Programming

44 Answers

View More Experts
Disclaimer

The ready solutions purchased from Library are already used solutions. Please do not submit them directly as it may lead to plagiarism. Once paid, the solution file download link will be sent to your provided email. Please either use them for learning purpose or re-write them in your own language. In case if you haven't get the email, do let us know via chat support.

Get Free Quote!

260 Experts Online