Assume we have a server A waiting for searching request, when such request comes the server A will multicast it to many other servers Bs each of which has a directory contains many text files and as a response to the request each of Bs servers will search inside these files for the requesting word and return the results to server A which in turn will return the file name and the location of each result to the requesting client
1- Server A must be multithreaded i.e. the thread which multicasts the request differs from the one which receives the results, so there must be an ID for each request.
2- Servers B also are multithreaded.
3- Multicast will be over MulticastSocket with UDP