delay(100);
It is stupid to delay on the receiver ends. STOP DOING THAT.
// Reset communication read variables
for (index = 0; index <6; index++){
msg[index] = '\0';
msg2[index] = '\0';
}
You clearly haven't a clue what NULL-terminated means. That is COMPLETELY unnecessary.