The constrain is there to avoid a "strange" value that might be send (the goal is of this is to control a toy chopper). I read that this might be wise to do in case a strange value occurs.
I know what the constrain function does. It takes an input, the value to be constrained, and a range of valid output values. It returns the constrained value.
Which you discard. So, the point of having called constrain() is lost. So, you might as well not call it.
Should it be a while statement?
It doesn't really matter. The loop() function is called in an endless loop, so it will eventually (and nearly as quickly) collect the serial data. Assuming any is actually arriving.
Still no results: I just get a printed "Setup done!" from my receiver.
Which appears is not the case.
How is the XBee connected to the Arduino? How is the other XBee connected to the PC? How are the two XBees configured?