Esempio n. 1
0
        public void Have(byte[] data)
        {
            PacketGenerator gs    = new PacketGenerator(data);
            int             piece = gs.ReadInt();

#if DEBUG
            Console.WriteLine("Successfully uploaded piece {0}", piece);
#endif
        }
Esempio n. 2
0
        public void FetchAndSendPiece(byte[] packet)
        {
            PacketGenerator gs             = new PacketGenerator(packet);
            int             pieceRequested = gs.ReadInt();
            int             pieceOffset    = gs.ReadInt();
            int             length         = gs.ReadInt();

            byte[] fileData = new byte[1];

            if (CurrentFile.ReadPiece(pieceRequested, ref fileData, pieceOffset, length))
            {
#if DEBUG
                Console.WriteLine("Sending piece: {0}", pieceRequested);
#endif
                byte[] send = PacketGenerator.Piece(pieceRequested, pieceOffset, fileData);
                Send(send);
            }
        }
Esempio n. 3
0
        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());
        }