@SuppressWarnings("ConvertToTryWithResources")
private void connectNotchers(NetworkInterface pNetworkInterface)
{

    tsLog.appendLine("Broadcasting greeting to all Notchers...");

    //open socket
    MulticastSocket socket = openUDPBroadcastSocket(pNetworkInterface);
    if (socket == null) return;
    
    //set up socket and "Roll Call" datagram packet
    DatagramPacket outPacket = null;
    if (!setupSocketAndRollCallPacket(socket, outPacket)){ return; }
    
    int loopCount = 0;
    byte[] inBuf = new byte[256];
    DatagramPacket inPacket;
    inPacket = new DatagramPacket(inBuf, inBuf.length);
    int responseCount = 0;
    
    //broadcast the roll call greeting several times
    while(loopCount++ < 5 && responseCount < MAX_NUM_NOTCHERS){

        responseCount = sendRollCallAndProcessResponders(
                                   socket, outPacket, inPacket, responseCount);
        
    }// while(loopCount...

    socket.close();

    numberOfNotchers = responseCount;
    
    //bail out if no boards responded
    if (numberOfNotchers == 0) {return;}

    // allow each unit to connect to the remote

    for (int i = 0; i < numberOfNotchers; i++){
        if(notchers[i] != null) { notchers[i].connect(); }
    }

    tsLog.appendLine("\nAll Notchers ready.\n");

    //initialize each Control board
    initializeNotchers();
    
}//end of NotcherGroup::connectNotchers