Introduction To Computer Networks - Project List
Implementing a basic server and client system where the each may connect with each other utilizing a linux bash shell scripst. After a successful connection, each will receive a confirmation of that status and when the connection is lost.
Known bug/Error Handling Issue: When attempting to update the cost between two nodes, it will update the DV table for the node the update was attempted on, but the DV tables for the neighboring nodes do not update. This bug was intentionally left for debugging in the future. Will notate if this has been resolved in main branch read me.
Utilizing Dijkstra's Algorithm to find the most cost-effective paths/routes when traveling between multiple nodes. In this case, we have 5 nodes who can only visibly see the cost to travel to their neighbors. The goal of this project is to dynamically update our nodes to understand which routes are the most cost-effective and efficient to its desired destination, by creating two structures per node.
-
The 1st structure(Our DV Table) will hold our current node, destination node, and its cost to get their.
-
The 2nd structure(Our Neighbors Table) will hold the current node's neighbors retaining: neighbor number, the neighbor's IP address, and the neighbor's port number.
By reading each node's table of neighbors and their cost associated with them, we can paint a better picture of available routes per neighbors and their cost.
Note: The program is set to update automatically every 30 seconds to ensure each node has the most up-to-date information
- print - Prints the Current Node's Distance Vector Table to any nodes it may see
- refresh - Sends the Current Node's Distance Vector Table its Neighbors
- update - Updates the Current Node's Distance Vector table
Update Format (Without brackets but include spaces): update [FromNode] [ToNode] [NewCost]
- route - Display's the lowest cost route to desired node and which node to hop to
Route Format (Without brackets but include spaces): route [ToNode]
Note: Menu-input text is not case sensitive, menu will handle any lowercase or uppercase discrepancies. To run a node under a Linux system, the format must be: [NeighborTxtFile] [VectorsTxtFile] [NodeNumToOpen] [PortNumberOfNodeNum] [TotalNumberOfNodes]
Example of wanting to open node 1: "neighbors1.txt vectors.txt 1 18181 5"
Please ensure to properly compile the program, prior to opening any nodes. Only the corresponding neighbor file and port number will allow the correct node to be ran successfully. Port numbers per node can be found within the neighbor txt files.