Je travaille sur un programme de partage de fichiers basé sur UDP. Permettez-moi de poster un exemple de code avant d'expliquer le problème.Question de syntaxe C++
while (true)
{
Data toRecv;
int bytesRead = recvfrom(s->_UPDsock, (char*)&toRecv, sizeof(toRecv), 0,(SOCKADDR*)&remoteAddress, &remoteAddresslength);
if(bytesRead > 0)
{
string temp(toRecv.chunk,(bytesRead-sizeof(int)));
if(!checker)
{
//total packet amount.
totalChunkAmount = toRecv.ACK;
checker = true;
}
}
}
Comme vous pouvez le voir à la ligne « 13 » Je l'initialisation totalChunkAmount
en utilisant la variable que je suis arrivé de la fonction de UDP recvFrom
. J'ai besoin d'initialiser cette valeur seulement une fois, c'est pourquoi je l'utilise dans un contrôle bool
if()
. et après l'initialisation, je retourne la valeur bool
à true
, donc il ne sera pas initialisé à nouveau. Existe-t-il un autre moyen d'obtenir le même résultat, mais n'utilise pas la moche bool
méthode de commutation.
Notez que c'est probablement une mauvaise idée. Les paquets UDP peuvent être perdus ou tomber en panne. Vous devriez probablement utiliser TCP à la place. –
@Billy: oui, cela peut être très vrai, mais sa question n'a pas vraiment à faire avec quoi que ce soit UDP ou TCP après tout ... – Mark
@Mark: Oui, c'est pourquoi c'est un commentaire plutôt qu'une réponse :) –