Skip to content

A collection of computer networking projects that utilize a server-client system and Dijkstra's Algorithm, which identifies the shortest path among several nodes from a starting & end point, and updates/writes that value among all the nodes.

Notifications You must be signed in to change notification settings

Xiao-Lii/NetworkingProjects-ServerClientSystems-C

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 

Repository files navigation

Introduction To Computer Networks - Project List

Project Outline

Programming Assignment #1 - Server and Client - C

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.

Programming Assignment #2 - Dijkstra's Algorithm - C/C++

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

Menu-Input Options Available / Functional:

  • 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.

About

A collection of computer networking projects that utilize a server-client system and Dijkstra's Algorithm, which identifies the shortest path among several nodes from a starting & end point, and updates/writes that value among all the nodes.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published