Locating peers without a central server
Numerous Internet-based programs exist that collaborate with other members of some group. As dynamically assigned IP addresses are now commonplace, for administrative convenience and to relieve exhaustion of the IP address space, locating other individual members is a problem. This is normally solved by a server with a known domain name (or a static IP address) providing a whitepage service but smaller groups, especially those using programs written by amateurs, usually can't afford this. Also, server supervision by a single member may be sporadic and the group is informal and too geographically disperse to assign a deputy.
The aim of this project is to create a Java library (API) that enables a host application to locate members of the same group. Once started by the host, the library will be an agent using its own execution thread, rather than a set of passive functions. These agents will independently locate known, on-line agents of the same group and notify its client. Each agent will be contacted on a known port, though a group default is expected. Groups will be identified by the group name and messages from other groups will be ignored. Once a remote client is located, the application is expected to establish its own communications.
This project was my final year, degree project. It will have very limited use as most distributed, Internet applications would incorporate a central server or whitepage service. Nonetheless, there are useful solutions to dealing with the problems of distributed applications.
It is published under the Library (or Lesser) GNU Public Licence v2.1, meaning it is free and you can change the source code..