private int sendRollCallAndProcessResponders(MulticastSocket pSocket,
       DatagramPacket pOutPacket, DatagramPacket pInPacket, int pResponseCount)
{
    
    String response;    
    int responseCount = pResponseCount;
    
    try {pSocket.send(pOutPacket);}
    catch(IOException e) {
        logSevere(e.getMessage() + " - Error: 245");
        pSocket.close();
        return(-1);
    }

    waitSleep(1000); //sleep to delay between broadcasts

    //check for response packets from the remotes
    try{
        //read response packets until a timeout error exception occurs or
        //until max number of units have responded
        while(responseCount < MAX_NUM_NOTCHERS){

            pSocket.receive(pInPacket);

            //store each new ip address in a Control board object
            for (int i = 0; i < MAX_NUM_NOTCHERS; i++){

                //if a ut board already has the same ip, don't save it
                //this might occur if a board responds more than once as the
                //host repeatedly broadcasts the greeting
                //since the first utBoard objects in the array are filled
                //first -- this will catch duplicates

                if (notchers[i] != null && notchers[i].ipAddr != null &&
                        notchers[i].ipAddr == pInPacket.getAddress()){
                    break;
                }

                //only boards which haven't been already seen make it here

                //if an empty reached, store new unit there
                if (notchers[i] == null){

                    notchers[i] = new Notcher(i,
                            RUNTIME_PACKET_SIZE, simulateNotchers, tsLog);
                    notchers[i].init();

                    //store the ip address in the unused object
                    notchers[i].setIPAddr(pInPacket.getAddress());

                    //count unique IP address responses
                    responseCount++;

                    //convert the response packet to a string
                    response = new String(
                            pInPacket.getData(), 0, pInPacket.getLength());

                    //display the greeting string from the remote
                    tsLog.appendLine(
                                    notchers[i].ipAddrS + "  " + response);

                    break;
                }
            }//for (int i = 0; i < numberOfControlBoards; i++)
        }//while(true)
    }//try
    catch(IOException e){
        //this reached if receive times out -- take no action
    }    

    return(responseCount);
    
}//end of NotcherGroup::sendRollCallAndProcessResponders