Ethan Song
COMSC-210
10 May 2020
Semester Project: DNS Resolver
Assignment/Problem Description: In this assignment, we were tasked to find a problem that
can be resolved with the implementation of a computer program. In this case, I picked the
problem of coordinating and matching internet URLs with their respective IP addresses quickly
and efficiently.
Discussion:
• Solution/Program Description: This program replicates the function of a DNS-resolver,
or a device that takes in a URL and then returns the corresponding IP address, in all using
a hash table for fast and efficient access. The program loads a list of 250,000 URLs with
their corresponding IP address, and allows the user to search for, add, or delete URL/IP
pairs while modifying the original URL/IP file.
• Flowchart/Diagram: IPAddress
- network: int
- subnet: int
URL - subnet2: int
- url: string - host: int
+ URL(string) - ipStr: string
+ toString(): string + IPAddress(string)
+ urlCompare(URL): int + toString(): string
+ ipCompare(IPAddress): int
DNS_Resolver
+ loadAddresses(string): map<URL,
IPAddress>
+ eraseFileLine(string, string): void
+ main(): int
+ operator<(URL, URL): bool
• Major Implementation Issues: The greatest difficulty was implementing the add and
delete features of the DNS file, since it involved not only searching and deleting from a
hash table, but also modifying a file’s information at the same time.
s
Screenshot:
Known Bugs/Errors:
• In regard to the data file (containing all the URL/IP pairs), the file needs to be formatted
consistently. If there is an empty line, for example, the program will crash. Furthermore,
if there are too many spaces between each pair, then the program will also crash.
Lessons Learned:
• What went well: The program runs very successfully with all described features
functioning properly. The program uses a simple yet effective user interface for data
entry and data retrieval, and effectively utilizes the functionality of a hash table for quick
information access/modification
• What will be done differently next time: Next time, I will keep trying to improve the
seamlessness of the user interface to make it more practical and easier to use.
Furthermore, I will expand the functionality of it to have it be usable by an actual
browser.