Je me demandais comment envoyer un paquet au client dans une architecture client-serveur avec RakNet. Dans ce sample code nous avons cette ligne:Meilleure façon d'envoyer un paquet avec RakNet
peer->Send(&bsOut,HIGH_PRIORITY,RELIABLE_ORDERED,0,packet->systemAddress,false);
Cependant, le prototype est le suivant (de la classe d'interface):
virtual uint32_t Send(const RakNet::BitStream * bitStream,
PacketPriority priority,
PacketReliability reliability,
char orderingChannel,
const AddressOrGUID systemIdentifier,
bool broadcast,
uint32_t forceReceiptNumber=0)=0;
Comme vous pouvez le voir, le 5ème paramètre prend un AddressOrGUID, cela signifie nous pouvons envoyer le SystemAddress comme dans l'exemple, mais aussi envoyer le GUID unique d'une machine connectée.
Il y a une fonction appelée:
RakNet::GetSystemAddressFromGUID();
Mais je ne sais pas si RakNet utilise pour convertir le GUID nous pouvons envoyer comme paramètre (je ne trouve pas l'utilisation de cette méthode dans RakPeer (Implémentation de RakPeerInterface) et je ne suis pas capable de trouver comment les paquets tamponnés sont envoyés chaque tick).
Le problème est le suivant:
Le code exemple répond directement au paquet reçu. Cependant, dans un jeu, le serveur doit envoyer des informations sans recevoir de paquet du client. Donc, je n'ai pas accès à quelque chose comme
packet->systemAddress
parce qu'il n'y a pas de paquet reçu.
Donc je vais devoir stocker quelque chose dans ma classe Player pour savoir comment leur envoyer des paquets: SystemAddress ou RakNetGUID. RakNetGUID est plus simple et plus léger à stocker qu'une SystemAddress. Mais si RakNet utilise GetSystemAddressFromGUID(), cela ne vaut pas car il a un algorithme O (log (n)).
Ai-je besoin de stocker le SystemAddress pour chaque lecteur moi-même ou RakNet :: Send() n'utilise pas cette méthode avec un RakNetGUID?
Merci!
Ceci ne donne pas la réponse complète. Comment obtenez-vous GUID en premier lieu? Lorsque vous obtenez l'événement ID_REMOTE_NEW_INCOMING_CONNECTION sur le serveur, comment obtenez-vous le GUID du nouveau client? –