The state of things on the distributed computing front goes like this:
The project of the team that I’m on will definitely be a file sharing program. I’m going to mostly be in charge of the gui and Casey will primarily be in charge of the actual sharing part of the code. We’re both still talking about the general architecture of the filesharing network.
The goal is to make it work without a centralized server. One way to do this is to use multicasting. Multicasting, at its most basic and least technical, amounts to sending everyone in a group. Basically, the clients would announce themselves via multicasting and continually add to the list of possible clients by saving the IP addresses announced via multicast.
To query, they would send a request using udp to everyone on their list. And then only the people with something that fit the query would respond.
This has obvious scalability problems, but should be workable for the scope of this project.