As described by the algorithm, each semaphore user has a helper process which is in charge of
communications with other helper processes. These helpers are solely working for the semaphore
and are independent to any specific application. These helpers form a framework of the
distributed semaphore. A user of the framework should be able to activate a helper process
(class DisSemHelper) on each participant computer. An essential requirement of the
broadcast-based algorithms is to establish a connection to every other node from every node.
Therefore, every DisSemHelper object needs to know the IP addresses and port numbers of
all the other nodes. You are suggested to have an Initiator process (running on any one of
the nodes) and collect the IP addresses and port numbers of all the other nodes. In doing so, the
constructor of Initiator takes the port number that the process listens to. The constructor of
each DisSemHelper has four parameters: the node ID number, the port number of the
DisSemHelper, Initiator‘s IP address, and Initiator‘s port number.