Я работаю над программой обмена файлами на основе UDP.Позвольте мне опубликовать пример кода перед тем, как объяснить проблему.
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;
}
}
}
Как вы можете видеть в строке "13", я инициализирую totalChunkAmount
, используя переменную, полученную из функции recvFrom
UDP.Мне нужно инициализировать это значение только ОДИН РАЗ, поэтому я использую его в проверке bool
if()
.и после инициализации я переворачиваю значение bool
на true
, чтобы оно не было инициализировано снова.Есть ли другой способ добиться того же результата, но не используя уродливый bool
метод переключения.