public int SavePieceAndRequestForNewOne(byte[] packet) { PacketGenerator gs = new PacketGenerator(packet); int piece = gs.ReadInt(); int pieceOffset = gs.ReadInt(); byte[] data = gs.ReadLeftoverByteArray(); CurrentFile.WritePiece(piece, pieceOffset, data); Console.WriteLine("Received piece: {0} {1:0.000}%", piece, ((float)CurrentFile.GetDownloadedSize() / (float)CurrentFile.GetSize()) * 100.0); if (data.Length < 1024 * 16) { byte[] have = PacketGenerator.Have(piece); Send(have); // Console.WriteLine("Successfully downloaded piece: {0}", piece); } return(RequestForNewPiece()); }