|
NAMENet::BitTorrent::PeerPacket - Parse/Build Peer Packets from BitTorrent SYNOPSIS# import everything use Net::BitTorrent::PeerPacket qw(:all); # or be more selective use Net::BitTorrent::PeerPacket qw(bt_build_packet :constants); # Encode a packet my $binary_packet = bt_build_packet($key1, $value1, $key2, $value2); # Decode a packet my $parsed_packet = bt_parse_packet($binary_data); DESCRIPTION"Net::BitTorrent::PeerPacket" handles parsing and building binary data shared between BitTorrent peers. The module optionally exports a single subroutine for building packets and another for parsing packets, as well as, a constant for each packet type defined by BitTorrent.CONSTANTSThere are ten primary types of packets that are shared between peers on a BitTorrent network. The following constants are how the type of packet being build/parsed are represented within this module.
SUBROUTINESbt_build_packetThis subroutine is responsible for building all types of BitTorrent packets. The arguments are passed into the subroutine as a list of key-value pairs. The resultant packet is sent back as a scalar.Depending on the requested packet type, the required arguments vary. One argument that is common to all calls is the "bt_code". The "bt_code" maps to a "BT_" constant exported by this module and determines the type of packet that will be built. What follows is a list of the different BT codes and the details of calling this subroutine with those codes. BT_HANDSHAKE Passing the "BT_HANDSHAKE" code causes a handshake packet to be generated. This type of packet is sent as soon as peers are connected and requires two additional keys:
BT_CHOKE Passing the "BT_CHOKE" code causes a choke packet to be generated. This type of packet requires no additional data and therefore no additional arguments. BT_UNCHOKE Passing the "BT_UNCHOKE" code causes an unchoke packet to be generated. This type of packet requires no additional data and therefore no additional arguments. BT_INTERESTED Passing the "BT_INTERESTED" code causes an interested packet to be generated. This type of packet requires no additional data and therefore no additional arguments. BT_UNINTERESTED Passing the "BT_UNINTERESTED" code causes an uninterested packet to be generated. This type of packet requires no additional data and therefore no additional arguments. BT_HAVE Passing the "BT_HAVE" code causes a have packet to be generated. This type of packet requires a piece index in addition to the BT code.
BT_BITFIELD Passing the "BT_BITFIELD" code causes a bit field packet to be generated. This type of packet requires the bit field be specified in addition to the BT code.
BT_REQUEST Passing the "BT_REQUEST" code causes a request packet to be generated. This type of packet requires the piece index along with block offset and size in addition to the BT code.
BT_PIECE Passing the "BT_PIECE" code causes a piece packet to be generated. This type of packet requires the piece index along with block offset and the data to be transferred in addition to the BT code.
BT_CANCEL Passing the "BT_CANCEL" code causes a cancel packet to be generated. This type of packet requires the piece index along with block offset and size in addition to the BT code.
bt_parse_packetThis subroutine is responsible for parsing all types of BitTorrent packets. It accepts a single argument, which is a reference to a scalar that contains the raw packet data. It returns a hash reference containing the parsed data.Depending on the packet type, the keys in the returned hash vary. One key that is common to all packets is the bt_code. The bt_code maps to a BT_ constant exported by this module and reveals the type of packet that was parsed. What follows is a list of the different BT codes that might be returned and the additional keys that will be packaged with each code. BT_CHOKE The resultant hash from a choke packet will only contain the "bt_code" key. BT_UNCHOKE The resultant hash from an unchoke packet will only contain the "bt_code" key. BT_INTERESTED The resultant hash from an interested packet will only contain the "bt_code" key. BT_UNINTERESTED The resultant hash from an uninterested packet will only contain the "bt_code" key. BT_HAVE The resultant hash from a have packet will only contain the "bt_code" key and the following additional keys.
BT_BITFIELD The resultant hash from a bit field packet will only contain the "bt_code" key and the following additional keys.
BT_REQUEST The resultant hash from a request packet will only contain the "bt_code" key and the following additional keys.
BT_PIECE The resultant hash from a piece packet will only contain the "bt_code" key and the following additional keys.
BT_CANCEL The resultant hash from a cancel packet will only contain the "bt_code" key and the following additional keys.
INSTALLperl Build.PL ./Build ./Build test ./Build install AUTHORJosh McAdams <joshua dot mcadams at gmail dot com>
Visit the GSP FreeBSD Man Page Interface. |