This is my code:
//Code for host
case (GameState.PlayingAsHost):
{
  session.Update();
  while (session.LocalGamers[0].IsDataAvailable) //Recieve data
  {
     NetworkGamer sender;
     PacketReader reader = new PacketReader();
     session.LocalGamers[0].ReceiveData(reader, out sender);
     guestPaddle.Position = reader.ReadVector2();
  }
  hostPaddle.Update(); //Update paddle position
  var packetWriter = new PacketWriter(); //Send data
  packetWriter.Write(new Vector2(hostPaddle.Position.X, 50));
  session.LocalGamers[0].SendData(packetWriter,SendDataOptions.InOrder);
  break;
}
//Guest Code
case (GameState.PlayingAsGuest):
{
  session.Update();
  while (session.LocalGamers[0].IsDataAvailable)//Recieve data
  {
     NetworkGamer sender;
     PacketReader reader = new PacketReader();
     session.LocalGamers[0].ReceiveData(reader, out sender);
     hostPaddle.Position = reader.ReadVector2();
  }
  guestPaddle.Update(); //Update paddle position
  var packetWriter = new PacketWriter(); //Send data
  packetWriter.Write(new Vector2(guestPaddle.Position.X, 50));
  session.LocalGamers[0].SendData(packetWriter, SendDataOptions.InOrder);
  break;
}
This is going to be a pong multiplayer(therefore the paddle names). Before when the guest sended it's package before recieving,the code worked except for that when playing as guest the host's X position was set to the guest's X position. I was testing if changing so that the guest and host recieved data before sending it would solve the problem. By doing so the host gets the error message:"Unable to read beyond the end of the stream". How do I solve this problem?
 
     
    