I see two issues with the receiver code. First, it will attempt to read data when none is present. Second, it will potentially miss data while it delays for 15 seconds.
The receiver code should not have delay() in it, and should test for the presence of an incoming byte before reading/printing it. See Serial.available(). Note that it is not reasonable to expect that the two Arduinos stay in sync by virtue of the delays being the same.