En interne c'est un vector<char>, donc les seules limites sont la valeur max de std::size_t et la mémoire vive de l'ordinateur.
L'autre facteur est la socket sur laquelle tu vas envoyer ces données : alors que TcpSocket enverra tout sans sourciller (c'est un flux, il n'y a ni début ni fin), UdpSocket te renverra une erreur si la taille de tes données dépasse UdpSocket::MaxDatagramSize (datagramme oblige).
Dans tous les cas, c'est rarement une bonne idée d'envoyer des grosses masses de données en un seule fois ; pour quelle raison posais-tu cette question ?