public static byte[] Handshake(string clientName, byte[] info_hash, string peer_id) { PacketGenerator rs = new PacketGenerator(); byte[] reservedBytes = { 0, 0, 0, 0, 0, 0, 0, 0 }; rs.WriteByte(Convert.ToByte(clientName.Length)); rs.WriteString(clientName); rs.WriteByteArray(reservedBytes); rs.WriteByteArray(info_hash); rs.WriteString(peer_id); return(rs.GetByteArray()); }
public static byte[] BitField(byte[] bitfield) { PacketGenerator rs = new PacketGenerator(); rs.WriteInt(1 + bitfield.Length); //Length rs.WriteByte(5); //ID rs.WriteByteArray(bitfield); //Payload: Bitfield return(rs.GetByteArray()); }
public static byte[] Piece(int pieceid, int piece_begin_offset, byte[] piece_part) //WARNING: USE REQUESTED AMOUNT OF BYTES (MAX 16KB) AT A TIME, SEND IN MULTIPLE REQUESTS { PacketGenerator rs = new PacketGenerator(); rs.WriteInt(9 + piece_part.Length); //Length rs.WriteByte(7); //ID rs.WriteInt(pieceid); //Payload: Piece ID [index] rs.WriteInt(piece_begin_offset); //Payload: Byte Offset [begin] rs.WriteByteArray(piece_part); //Payload: Piece Block [block] return(rs.GetByteArray()); }